• ベストアンサー

変位指数表現・・・

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

noname#90947
noname#90947

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

  • ベストアンサー
  • 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
質問者

お礼

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

関連するQ&A

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

    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未満になるよう指数部を増減する操作である

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

    数値を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にも符号ビットがないと出来ないように思い質問しました。回答宜しくお願い致します。

  • 浮動小数点数について

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

  • 2進法と10進法の演算問題

    2進数→10進数(負の数)<2の補数表現> 8bit(8桁)の一番左のbitは符号bitとする 1)11111111 2)10011100 3)1.0010000 4)1.1100001 上記の問題が分かりません。 4桁ずつに分けて10進法に直して考えればよいのでしょうか? 補数表現自体よく分からないです。

  • 浮動小数点数の内部表現について教えてください

    float型の内部表現を表示するプログラムを書いていくつか試してみたのですが、どこからどこまでが仮数部でどこからどこまでが指数部なのか良くわかりません。 曲がりなりにも自分で考えた結果は次のとおりです。 10進表示: 内部表現 ;2進の指数表現 2 :01000000000000000000000000000000;10.0*10^0 4 :01000000100000000000000000000000;10.0*10^1 8 :01000001000000000000000000000000;10.0*10^10 16:01000001100000000000000000000000;10.0*10^11 32:01000010000000000000000000000000;10.0*10^100 また、 1 :00111111100000000000000000000000;0.1111111*10^0 0.5 :00111111000000000000000000000000;0.0111111*10^0 0.25:00111110100000000000000000000000;? 0.125:00111110000000000000000000000000;? 0.0625:00111101100000000000000000000000;? となりました。最上位ビットが符号だということは分かります。 質問をまとめると、 (1) 10進で 0.5 の2進指数表現は 0.0111111*10^0 ということなのでしょうか。もしそれで正解なら、どうして 0.1*10^0 としないでわざわざ丸め誤差を含む無限小数で表すのでしょうか。 (2) 仮数部と指数部のビットは決められていなくて、例えば状況によって仮数部のビットが少なくなり指数部のビットが多くなったりするのでしょうか。 (3)仮数部での小数点はどこにあるのでしょうか。 (4)float 型の小数精度は最小6桁ということですが、これは10進で6桁なのか2進で6桁なのか教えてください。 どれか一つでも教えていただけると助かります。 使ったコンパイラは Borland C++ Compiler 5.5 です。 }

  • 1の補数表現

    昔の本を買って情報処理の勉強をしているのですが ふに落ちない事がありまして質問させていただきます。 符号付の整数を8ビットの2進数であらわす時、1の補数表現で最小の数は-128である。 と言う問題がありまして回答が正しいとなっていました。 しかし自分は-127までしか表現できないと思いまして。。。 2の補数表現なら-128~127まで表現できると思うのですが 1の補数表現なら-127~127までしか表現できないと思います。 詳しい方がいましたらよろしくお願いします。

  • 2進数表現

    負数を表すのに2の補数を用いる16ビットの2進数表現(固定小数点)について次のことについて教えてください。 1.表現できる正の最大数を2進数、10進数で表すとどうなるか。 2.表現できる最小の負数(絶対値が最大の負数)を2進数、10進数で表すとどうなるか。 この2つの問題なのですが、どう考えればいいのでしょうか?題意の負数を表すのに2の補数を用いる16ビットの2進数表現(固定小数点)からあまり意味が分かっていないのですが… よろしければ答えだけではなく考え方も教えてください。よろしくお願いします。

  • 32bitの浮動小数点数表現について悩んでいます

    情報処理の初心者です。 今、14070366(10)を数値データとしてとらえ、 32bitの浮動小数点数で表現するという問題について考えています。 14070366(10) =100111000001010000101110(2) 10進数を2進数に基数変換した部分、25桁が仮数部になるんですよね? 符号部は+なので0。 では指数部の7桁には何が入るのでしょうか? 以上が私の分かっていることですが、 最終的な解答を16進数で表記すると、 14070366はどうなるのでしょうか? お願いします。

  • 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進数で表示しなさい 答えと解き方を教えて頂ければ幸いです

  • 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進数で表示しなさい 答えと解き方を教えて頂ければ幸いです