浮動小数点の表現について - 16ビット浮動小数点表示法の正規化

このQ&Aのポイント
  • 浮動小数点の表現について、質問者は16ビットの浮動小数点表示法での数値の表現について疑問を持っています。具体的には、0.375を正規化した表現はどれか調べたいということです。また、質問者は参考書にも同様の説明があったが、Eの先頭のビットが符号を表すのか分からないと述べています。
  • IEC 754では、指数にE-127を使って非負と負の表現を可能にしています。しかし、16ビット浮動小数点表示法の場合、質問者はEに符号ビットがないため、非負か負かの判断ができないと疑問を持っています。
  • 質問者は浮動小数点の表現について混乱しており、16ビット浮動小数点表示法ではEの先頭ビットは符号を表すのかどうかを知りたいと質問しています。回答者に解答をお願いしています。
回答を見る
  • ベストアンサー

浮動小数点の表現(基本情報)

数値を16ビットの浮動小数点表示法で表現する。形式は図に示すとおりである。10進数0.375を正規化した表現はどれか。ここでの正規化は,仮数部の有効数字よりも上位の0がなくなるように指数部を調節する操作である。(H9 秋 問13) S(1ビット):仮数部の符号(正は0,負は1) E(4ビット):2のべき乗の指数部で,負数は2の補数 M(11ビット):仮数部の絶対値 【参考にしたサイト】 http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fudo.htm 【質問】 Eは、負数は2の補数とありますが、Eの先頭1ビットは符号を表すのでしょうか? 手持ちの参考書にも同じような説明があったのですが、先頭が符号なのか分かりませんでした。IEEE754では、指数にE-127を使っているので、非負、負の表現は出来る事は分かりました。しかし、上記の場合は、非負、負の判断はEにも符号ビットがないと出来ないように思い質問しました。回答宜しくお願い致します。

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.5

>4ビットでは、-8~7を表現出来ますが、 最初からこの言い方が出てくるのが変です。 1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 のように,4bitあれば,2の4乗=16とおりのビットパターンになりますけれど,それがどんな数を表現しているかはこの段階では不明です。 このビットパターンを「符号なし整数」として解釈するなら,次のように0以上の正の整数にそれぞれ対応づけられ,負の数は表現できません。 1111 = +15 1110 = +14 1101 = +13 1100 = +12 1011 = +11 1010 = +10 1001 = +9 1000 = +8 0111 = +7 0110 = +6 0101 = +5 0100 = +4 0011 = +3 0010 = +2 0001 = +1 0000 = 0 このビットパターンを「2の補数表現を採用した,符号あり整数」として解釈するなら,次のようにそれぞれ対応づけられます。 1111 = -1 1110 = -2 1101 = -3 1100 = -4 1011 = -5 1010 = -6 1001 = -7 1000 = -8 ――――― 0111 = +7 0110 = +6 0101 = +5 0100 = +4 0011 = +3 0010 = +2 0001 = +1 0000 = 0 >負数を2の補数で表すとは-8~-1を表す事かと思っていましたが、 >これが間違いなんですよね? >0と正数が含まれている所がいまいち理屈が分からない はい,間違いです。2の補数表現を採用するなら,負数も0も正数も表現できます。 また単純に「-8~-1を表す事」でもありません。 「-8~-1を表す事」で良いのなら,16とおりのビットパターンを適当に-8~-1に対応させて独自の負数の表現形式をつくっても良いわけです。そうではなくて,-8~-1を表すために上記のようにビットパターンを対応させたもの,それが2の補数表現です。 よって,冒頭の, >4ビットでは、-8~7を表現出来ますが、 というのは,2の補数表現を採用している場合にそう言える,2の補数を前提としているから出てくる言い方であって, >2の補数でnビット表現出来る範囲が理解が出来ない事に気が付きました という人が「-8~7を表現出来ますが」と当たり前のように言ってしまうのは変だということになります。

ipyodora
質問者

お礼

詳しく回答ありがとうございました。今日仕事の帰りに2の補数の表現範囲について自分で気が付いて、すぐにここを見ると回答を頂いたので申し訳ない気持ちになりました。 勘違いしてた理由が参考書に「重要:負数を2の補数で表した2進数のnけたでは、-2の2乗~2のn-1乗-1の範囲を表すことができる」と書かれており、負数を2の補数で表す場合に限った事だと勘違いをしておりました。それに加え、一つ前のお礼で書いた先頭1ビットが符号である事についての理解が原因でした。 先頭1ビットが符号であるという事が分かり、参考書を読み返したり、十進数と2の補数の対応表を見たりして、重要:負数を2の補数で・・・」の文言以外を考えると、負数に限った話ではないと納得ができ、気が付きました。 おかげさまで、スッキリと解決しました。 色々とご親切にして頂いてありがとうございました。

その他の回答 (4)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.4

>Eは、負数は2の補数とありますが、Eの先頭1ビットは符号を表すのでしょうか? はい,表します。 ご自身による5か月前の質問でも,2の補数とは先頭1ビットが符号の役割をもつ数値表現形式でした。 http://okwave.jp/qa/q5982301.html 逆に言うと,先頭1ビットが符号を表さない2の補数表現というのはありません。 ちなみに,上記の過去の質問については解決できたのでしょうか。疑問が解けたのなら質問を締め切っていただけるとありがたいです。

ipyodora
質問者

お礼

回答ありがとうございます。以前も丁寧に回答いただいたのですが、もう少し時間を下さい。 回答を読んでも、理解し切れなかったので、時間が取れた時にと思っていたら、かなり時間が経過していました。すいませんでした。 wkipediaの2の補数を参照したとろこ、「3 負の整数の見方」では、「ここで、左端のビットを符号ビットとし、符号ビットが1なら負数とする。」と書かれており、2の補数自体が先頭1ビットが必ず符号になると言う表現を見なかった為、混乱しておりました。 「wkipedia 2の補数」 http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C%E6%95%B0 で、色々調べながらお礼を書いていると、2の補数でnビット表現出来る範囲が理解が出来ない事に気が付きました。4ビットでは、-8~7を表現出来ますが、負数は-8~-1なので、負数を2の補数で表すとは-8~-1を表す事かと思っていましたが、これが間違いなんですよね? 0と正数が含まれている所がいまいち理屈が分からないですが、前進した感じがしました。 回答ありがとうございました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

「2の補数」は、コンピュータで負の値(主に整数)を表現するのに、もっともよく使われている方法だと言えるでしょう。 このような問題の参考書には必ず載っていると思います。 > 負の判断はEにも符号ビットがないと出来ないように思い 「4ビットの符号付き整数で、負は2の補数」とあるだけで、正負の判断方法等は明確なので、わざわざ書かないだけです。

ipyodora
質問者

補足

「4ビットの符号付き整数で、負は2の補数」とあるとは どこの部分に書いている事ですか?

noname#140045
noname#140045
回答No.2

「負数は2の補数」 負数とあるので、質問者さんが書いたとおりです。 何ら、間違いではありません。

ipyodora
質問者

お礼

回答ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「2の補数」がどういうものであるか理解できてますか? 理解できているなら, そのような疑問はもたないはずですよ.

ipyodora
質問者

補足

よくこういう回答をされる方を見かけるのですが、どこが理解出来てないのか分からなかったりして、疑問が出てきてしまう状態になっています。なので、詰まった所の回答で分かっていない部分に気がつけてくると思います。見直して気が付ければ良かったのですが、なかなか気が付かなかったので質問を出させて頂きました。

関連するQ&A

  • 浮動小数点数について

    現在情報処理の勉強をしているのですが、下記の問題が解けません。。 もし、わかりすく教えてもらえれば,,,と思い、、、 ↓ 数値を16ビットの浮動小数点数で表現する。10進数0.375を正規化した表現を、2進数であらわすとどうなるか求めよ。ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調整する操作である。 仮数部の符号(正は0 負は1)(1ビット) 奇数を2とする指数部で、負数は2の補数(4ビット) 仮数の絶対値(11ビット) で、 答えは 0111 1110 0000 0000 なのですが、この指数部がどうしてもわかりません。 初心者なので、、わかりやすく教えてくだされば、、うれしいな。と思うのです。

  • 数値を浮動小数点表示

    基本情報技術者の勉強を始めたのですが、 浮動小数点の問題で分からないものがありました。 問題は、 ・基数は2。 ・数値を24ビットで表現。 ・左から1ビットは仮数の符号を表す。 (0なら正、1なら負) ・左から数えて2ビット目から8ビット目までで 2のべき乗を表す。(負数は2の補数で表す) ・右16ビットは仮数の絶対値を表す。 (あと、左から数えて8ビット目と9ビット目の間が 小数点位置、だという表示があります。) 以上のように24ビットの浮動小数点表示で、最大数を 16進数で表したものはどれか? この問題の答えは3FFFFFとなっているのですが、 どうしてこのような解答になるのでしょうか? ヒントには「指数部は負数を2の補数で表すので、左から 2ビット目も0でなければならない」とあるのですが、 わけわからない状態です。 簡単で結構ですので、教えていただけないでしょうか。 よろしくお願いします。

  • 浮動小数点の問題です。

    10進数+0.375を浮動小数点で記憶させ、その記憶領域のダンプリストを読み取ると、 0.375は16進数で(1)に、 -1は16進数で(2)となる。 答えは(1)は7F00、(2)8600です。 この2つの問題の途中式と解説をお願いします。 バイト型:バイト数は1バイト,負の補数は2の補数で表す 整数型:バイト数は2バイト,負の補数は2の補数で表す 浮動小数点:バイト数は2バイト,符号1ビット,指数部5ビット,仮数部10ビット ビット番号0:符号部.仮数部の符号が入っている.0なら正,1なら負 ビット番号1-5:指数部.負の値を2の補数で表す ビット番号6-15:仮数部.ビット番号6を小数点第1位とする仮数部の小数点以下の絶対値が、正規化された2進数で入っている 正規化とは,仮数部が2進数で0.1以上1.0未満になるよう指数部を増減する操作である

  • 32ビットの浮動小数点について

    32ビットの浮動小数点(符号1ビット指数8ビット仮数23ビット)で非正規表現をもとめるには例えば(符号0指数0仮数1.01101)はどういう計算をすれば良いのでしょうか?

  • 浮動小数点の正規化方法について

    基本情報処理技術者試験を20日に受けます。勉強不足で困っています。どなたか教えてください。 問題「数値を16ビットの浮動小数点表示法で表現する。10進数0.375を正規化せよ:ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調節する操作である。」  答え「0111111000000000」 最初の1ビットが仮数部の符号、次の4ビットが2のべき乗の指数部で負数は2の補数、残りの11ビットが仮数部の絶対値 となっています。 0.375を2進数に直すところまではわかったのですが、次の正規化がよくわかりません。よろしくお願いいたします。

  • 浮動小数点形式の問題

    数値を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 はどうやって導くのか教えてください。 お願いいたします

  • 浮動小数点数

    再質問で畏れ入ります。 数値を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 はどうやって導くのか教えてください。 お願いいたします

  • 10進数を2進数に

    10進数を2進数に変換する問題なのですが、 まったくもって理解ができません、教えて頂ければ幸いです S(符号)は1ビットで仮数の符号を表す E(指数部)は4ビットで指数を表し負数は2の補数で表現 M(仮数部)は11ビットで仮数の絶対値を表す 基数は2とする 仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す 小数点はEとMの位置にする 0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする 問.10進数の-5.25を2進数で表示しなさい 問.10進数の-0.125を2進数で表示しなさい 答えと解き方を教えて頂ければ幸いです

  • 浮動小数点について

    32ビットの浮動小数点(符号1ビット指数8ビット仮数23ビット)で最小値を求めるにはどういう計算をすればいいのでしょうか?また調べた数値だと最小値 1.175494351E-38 最大値3.402823466E+38のところ±3.40282347E+38 ~ ±1.40239846E-45のところがあるのですがどちらが正しいのでしょうか?

  • 10進数を2進数にする問題について教えてください

    10進数を2進数にする問題について 10進数を2進数に変換について 10進数を2進数に変換する問題なのですが、 まったくもって理解ができません、教えて頂ければ幸いです S(符号)は1ビットで仮数の符号を表す E(指数部)は4ビットで指数を表し負数は2の補数で表現 M(仮数部)は11ビットで仮数の絶対値を表す 基数は2とする 仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す 小数点はEとMの位置にする 0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする 問.10進数の5.25を2進数で表示しなさい 問.10進数の0.125を2進数で表示しなさい 答えと解き方を教えて頂ければ幸いです