• ベストアンサー

変位指数表現・・・

わからない問題があるので教えてください。 仮数部を2進数10桁の符号絶対値表現とし、 指数部を2進数6桁の変位指数表現としたときの値域を求めなさい。 という問題なのですが、よくわかりません。 自分なりにとりあえず最大値最小値を考えてみましたが…。 仮数部 ・最大 0111111111 (→ +511) ・最小 1111111111 (→ -511) 指数部 ・最大 011111 (→ +31) ・最小 111111 (→ -31) 符号絶対値表現ということは、こういった書き方でいいのでしょうか…。 2の補数を使って負の数を表現するやり方は、ここでは関係ないのでしょうか? 値域の求め方もわかりません。 どなたか教えて頂けるとありがたいです。

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

  • ベストアンサー
  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

>符号絶対値表現ということは、こういった書き方でいいのでしょうか…。 仮数部が少し違います。符号の正負で分けて考えます。 指数部は変位指数表現になっていません。 実際に計算機やパソコンの中で使われている次のURLの指数型実数の表現方式「IEEE 754」(国際的な共通規格)が参考になるかと思います。実例も載っています。 http://ja.wikipedia.org/wiki/IEEE_754 ここで学んでください。 >2の補数を使って負の数を表現するやり方は、ここでは関係ないのでしょうか? ここでは関係ありません。 > 値域の求め方もわかりません。 この規格に習えば、 仮数部の符号+絶対値表現は次のようになります。 > 仮数部を2進数10桁の符号絶対値表現とし、 仮数部の最小値=1.0000000000→10桁の仮数部=0000000000 仮数部の最大値=1.1111111111→10桁の仮数部=1111111111 仮数部の範囲は「1≦仮数部<2」 先頭の1は仮数部の符号で置き換えられる。 次に指数部のエクセス表現(変位指数表現)は次のようになります。 > 指数部を2進数6桁の変位指数表現 オフセット(変位)=011111(+31) 指数部の最大値=111111(63=(+32)+31)→6桁の指数部=111111(=+32に対応) 指数部の最小値=000000(0=(-31)+31)→6桁の指数部=000000(=-31に対応) 指数部のゼロはオフセット値→011111(=0に対応) となりますね。 値域については 正の数の場合 最小値 {(1.0000000000)_2}*10^(-31)=1*10~(-31) 最大値 {(1.1111111111)_2}*10^(+32)=1.9990234375*10^32 負の数の場合 最大値 -{(1.0000000000)_2}*10^(-31)=-1*10~(-31) 最小値 -{(1.1111111111)_2}*10^(+32)=-1.9990234375*10^32 したがって値域は 1.9990234375*10^32≧|x|≧-1*10~(-31) となる。 なお、 完全なゼロやアンダーフローは 指数部=000000,数部=0000000000 として表現 非正規化数(桁落ち数)は指数部=000000,仮数部=ゼロ以外 として表現(桁落ちが起こる) その他、∞(オーバフロー)は指数部=111111,仮数部=0 として表現 することになります。

参考URL:
http://www.psc.edu/general/software/packages/ieee/ieee.php
noname#90947
質問者

お礼

ありがとうございます!大変よくわかりました! いくら調べてもどこを読んでいいのかすらわからなくて…。 本当に助かりました><