- ベストアンサー
16ビット浮動小数点数の表現方法について
学校の課題において、ある数を2進数で表現し、さらにその数を16ビット浮動小数点数で表しなさい。またそのとき生じる誤差の名称を記しなさい、という課題がでており取り組んでいるのですが、ネットで調べていても計算方法が理解できず行き詰っております。どなたか計算方法の手助けをお願いできないでしょうか。 与えられた条件 符号ビット:1ビット(0:正、1:負) 指数部:4ビット 仮数部:11ビット 16ビット浮動小数点数で表す数 10011100011000011 です。計算方法を理解したいので、なるべく詳しくお願いいたします。 誤差の名称もできればご教授願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 16ビット浮動小数点数で表す数 > 10011100011000011 この17bitの「整数」を、その条件で浮動小数点に変換する、ってことですか? この質問には、指数部と仮数部の条件に不明なところがあって、このままでは浮動小数点表現にすることができません ・指数の範囲 指数には正も負もあります。通常は、範囲が正負等しくなるようになっています。 4ビットだと -7(または-8)~+7となるのですが、質問中にこれについての条件がありません。 あるいは、非負のみで0~15なのでしょうか? ・仮数の正規化 一般で使われている浮動小数点では、仮数部の桁をそろえるために、指数を調節する「正規化」が行われます。 例えば、 一番上の位の1が整数の1の位、それ以下は小数の位になるようにする 10.1(2) * 2^2 →仮数を1/2→指数は2倍→ 1.01(2) * 2^3 この条件についても記述がありません。 もし、例示した正規化をするなら、 1.xxx * 2^16 になって、4桁の指数では表現できません。 あるいは、仮数部は11bitの整数、ということなのでしょうか? また、このような正規化をした時、最上位ビットを仮数部では省略する、という方法もあります。 質問の場合では、最上位の11bit目の上に常に1の12bit目があると考えて、計算する、というものです。 これについても、この手法を採用するかどうかの記述がありません
その他の回答 (3)
- koi1234
- ベストアンサー率53% (1866/3459)
>16ビット浮動小数点数で表す数 >10011100011000011 待て待て 真面目に確認したら17ビットデータじゃないか と 何処か写しし間違えてませんか? 基本的な計算は先に書いたとうりです
- koi1234
- ベストアンサー率53% (1866/3459)
#1修正 >配当乗算 該当乗算 アホ辞書のせいか改めて見ると誤字が多発してることがありますが めんどくさいのであえてこれ以上訂正しません
- koi1234
- ベストアンサー率53% (1866/3459)
貴方がどこまで理解してるのかわからないので ある程度の注釈つけてるつもりです >符号ビット:1ビット(0:正、1:負) >指数部:4ビット >仮数部:11ビット それで計16ビットであることは理解できますよね? 実際の値は 10011100011000011 ですので 符号 1 指数部(整数部) 0011 仮数部(小数部) 00011000011 となります ここから2進数の表現が入ってきますが2進数は理解されていますか? 符号は1なので マイナスの値ということになります 0011 というのが 2^3*0 + 2^2*0 + 2^1*1 + 2^0*1 を表します 00011000011 というのが (1/2)^1*0 + (1/2)^2*0 + (1/2)^3*0 以下続くを表します ※ ^ ってのは乗算(2^3 は2の3乗)を意味します 配当乗算の値が加算されるビット位置が1になります でもってそれを計算すると・・・・面倒なのでやってません (自分でやってください) >誤差の名称 丸め誤差でいいのではないかと思います