• ベストアンサー

16進数に変換して浮動小数点表示

10進数の"-3911.9140625"を16進数にし、正規化して浮動小数点で表示せよ。 という、問題で私が出した答えと、友達が出した答えがことなりました。 私も友達も自分の答えに自身がありません。 どなたか、問いていただけないでしょうか? なんせ、テストが近いもんで・・・

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

3911÷16 = 244 ... 7 244÷16 = 15 ... 4 より、3911 = F47(16) 0.9140625×16 = 14.625 0.625×16 = 10 より、0.9140625 = EA(16) つまり、-3911.9140625 = -F47.EA(16) これを正規化すれば、-F.47EA×16^2 ですね。

SA3594
質問者

お礼

ありがとうございました。 どうやら、友達の答えの方が正解だったようです。 私は、浮動小数点数の負数の表現には、補数を使うと思って、 3911.9140625 = F47.EA(16) から16の補数を答えだと思ったのですが・・・

その他の回答 (2)

  • anisol
  • ベストアンサー率48% (146/301)
回答No.3

2の補数表記にすると、何バイトのデータかによって答えが違ってきますね。また、そのまま桁をずらせなくなります。 (それで私もこの問題を見て???となりました。No.2のpunchan jpさんの回答を見て、ただマイナスをつければいいということにやっと気づきました。) でも答の形式を指定していないのはちょっと不親切にも思いますね。マイナスのついた16進数ってあまりなじみがないし…

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

手で計算するのはかったるいので、プログラムを組んでみるというのは どうですか? # それとも、そういうプログラムを書け、という問題? 実際にやってみると、4バイトの浮動小数点表記(IEEE形式で良いんですよね?) だと c5747ea0 、8バイトだと c0ae8fd4 00000000 です。 因みに、こんなプログラム。 #include <stdio.h> int main() {   double a = -3911.9140625;   float b = -3911.9140625;   long* x;   x = (long*)&a;   printf("8バイト表記だと:%08x %08x\n", x[0], x[1]);   x = (long*)&b;   printf("4バイト表記だと:%08x\n", x[0]);   return 0; } # 反則?

関連するQ&A

  • 145.7を二進数であらわせ(浮動小数点で)ってできますか?

    145.7を二進数、しかも、浮動小数点であらわすことってできますか? 僕が考えた結果・・・答えでず・・・ しかし、友達曰く「大学の問題であるんだ!」 らしいです。 32ビットで表せだそうです、基数の指定とかは無いみたい・・・どうしましょう

  • 浮動小数点法での2進数変換

    浮動小数点法を用いての2進数への変換に関して質問です。 10進数の(-0.0001)を浮動小数点表示を用いて2進数に変換しなさいという問題が全くわかりません。 どなたか詳しく解説してください。お願いします。

  • 浮動小数点について

    当方、浮動小数点を勉強しているのですが、 テキストの解説を読んでも理解が出来ません。 正規化とか指数と仮数の意味が分かりません。 そこで質問なのですが、浮動小数点の計算方法を教えて下さい。 IEEE形式の浮動小数点も教えて頂けると助かります。 また、下記の問題について解説して下さい。 数値を16ビットの浮動小数点表示法で表現する。 形式は図に示す通りである。10進数0.375を正規化した表現は、どれか。 ここでの正規化は、仮数部の有効数字よりも上位の0が無くなるように、 指数部を調節する操作である。 (図は添付します) 何故「E」の値が「1111」になるのでしょうか。 お手数ですが、ご教授お願いします。 尚、特に分かり易いホームページがあったら、 そのURLを記載して頂いても結構です。 以上、よろしくお願い致します。

  • 浮動小数点表示の問題です教えてください。

    浮動小数点表示の問題です教えてください。 ・浮動小数点表示は10進数でいくつを表しているか? 符 指数 仮数 0 000 00 0 000 01 0 000 10 ・  ・   ・ ・  ・   ・ ・  ・   ・ 1 111 01 1 111 10 1 111 11 ±□×2^□ の形で表として示せ。 という問題です。 回答お願いします。

  • 浮動小数点変換

    (1)次の数値をIEEE754単精度形式で正規化された浮動小数点に変換し、結果を8桁の16進数で表記しなさい。 (a)0.5 0.5を二進数で表すと0.1 0.1*2^0であるから 0 00000000 10000000000000000000000 (b)1.0 1.0を二進数で表すと1.0 0.1*2^1であるから 0 10000000 10000000000000000000000 (c)1.25 1.25を二進数で表すと1.010 0.101*2^1であるから 0 10000000 10100000000000000000000 浮動小数点への変換、あってますでしょうか? また結果を8桁の16進数で表記とありますが 0.5だったら16進数で表すと0.9?これを8桁*16^なんとか乗で表すということでしょうか?

  • 「浮動小数点表示」と「丸め」について

    数値解析についての質問です。 「23.49を有効数字4桁の浮動小数点表示で書け」という問題があるときは 0.2349 * 10^2 と答えるのが正しいのでしょうか。 つまり「浮動小数点表示で答えよ」とあれば、 0.○○○... * 10^○の形で書けば良いのでしょうか。 また、数値の丸めの仕方に関する質問なのですが、教科書に以下のような記述がありました。 k+1桁以降の数を切り捨てる a.この切り捨てられた数が第k桁の単位の半分より小さいときは、第k桁の数はそのままにする。 b.もし半分より多きときには第k桁の数に1を加える c.この切り捨てられた数が第k桁のちょうど半分のときには最も近い偶数に丸める とあるのですが、その後の記述で 「1.2535をそれぞれ小数点以下3桁、2桁、1桁で丸めると、1.254,1.25,1.3が得られる」また「小数第3位以下の情報なしで、1.25を1桁で丸めると1.2になる」とあるのですが、 後者が1.2になるのは理解できるのですが、最初の規則に則ると前者も1.2になるように思うのですが、何故1.3になるのでしょうか。 以上の規則に則った上で以下の問題に答えてみました。 問.-89.216618, 500000, -0.002213675を丸めて有効数字5桁の浮動小数点表示で書け 僕の答え -0.89217 * 10^2 0.50000 * 10^6 -0.22137 * 10^-2 というのは合っていますでしょうか。 質問が多くて大変恐縮ですが、解説、ご指摘をお願いします。 よろしくお願いします。

  • 2進浮動小数点表示

    「10進数5を32ビット長の2進浮動小数点表示で表せ。」という問題があるのですが 10進数5を2進数表示すると101となり、0.101*2^3と表せるという所まで分かったつもりなのですが後が続きません。 どうかお力添えの方をよろしくお願いします。

  • 浮動小数点形式の問題

    数値を32ビット浮動小数点形式で表す。指数部は2を基数とし、負数は2の補数で表現する。10進数0.375をこの2を基数とした浮動小数点形式で正規化したものはどれか。ただし結果は16進数で表現する。 答え:7FC00000 という問題です。 まず0.375を2進数に 0.011 正規化 0.11 * 2^-1 指数部-1を2進数で求める -0000 0001 ->1111 1111 仮数部符号は正の数なので0 0111 1111 ???? ???? ???? ???? ???? ???? と・・・ ここの部分からわかりません・・・ (なぜか手持ちの参考書には省略してあり・・・) 7Fの部分はこれで間違いないでしょうか? またそのあとのC00000 はどうやって導くのか教えてください。 お願いいたします

  • 浮動小数点についての問題

    浮動小数点についての問題がわからないので 質問させていただきます。 1025と-1を16進数の浮動小数点にしたいのですが どうするのでしょうか?

  • 浮動小数点の正規化の必要性について

     浮動小数点の正規化の必要性について教えてください。  浮動小数点で数を表す際に、正規化は必ずしも必要なもの(行わなければならないもの)なのでしょうか?    また浮動小数点の正規化のルールとして、  2進数か16進数に変換したとき  「指数部を調整して、仮数部の最上位けたを“0以外にする”」というルールがあるようなのですが、何故「指数部を調整して、仮数部の最上位けたを“0以外にする”」という処理が必要となるのでしょうか?

専門家に質問してみよう