アプリ版:「スタンプのみでお礼する」機能のリリースについて

学校から課題が出ているのですがさっぱりなので教えていただければ幸いです。

課題:11051120 この数を32bitの固定小数点数、浮動小数点数であらわせ

(1)固定小数点数、浮動小数点数とは何か
(2)数値をあらわすための手順

この2点を教えてください。
1~10まで教えろとは言いません。ただ、やろうにも全くわからないので、ヒントだけでもいただけたらと思っています。
提出期限は10日までなので、よろしくお願いします。

A 回答 (5件)

    • good
    • 0

教科書なりで教わっていませんか?



まぁ、32ビットとかいうとややこしそうに思えるならば、10進で8桁とかでも良いでしょう

固定小数点というのは、小数点の位置を固定したものです。たとえば8桁のうち整数部を5桁、小数点以下を3桁とします。100÷3ならば
00033.333
となるわけですね。
浮動小数点というのは小数点の位置が変わる・・つまり指数表現しようというものです。
たとえば仮数部分が5桁、指数が3桁とすれば先ほどの例なら
3.3333×10^(001)
という具合になるわけですね。
実際には符号ビットなども必要になりますね。

いきなり
>11051120 この数を32bitの固定小数点数、浮動小数点数であらわせ
というのは無理があって、その前段階で必ずどういうフォーマットにしているのかの説明があるはずです。ピンポイントでそこだけ読むのではなく、その前後も含めてちゃんと読みましょう。
    • good
    • 0

ネットで検索もしてみましょう。

ご自分にとって分かりやすい説明が転がっているかも
しれません。まあ、私なりに何も知らない人を前提に少し書いてみます。

コンピュータで数値を表す方法は幾つもあります。そのなかで代表の二つが固定小数点
と浮動小数点です。

固定小数点という名前は、きっと浮動小数点から来ていて、固定小数点と言う言い方は
違和感を感じるでしょう。要するに整数のことです。0から前後に1づつで表せる数値で
あり、そのデータ領域のサイズで表せる範囲が違います。

0から前後と書きましたが、符号付きと符合なしでは違います。
8ビットのデータ領域では2の8乗で256通りの数値を表せます。
符合なしであれば正の整数ということになりますから、0~255までの256通りです。
符号付きでしたらマイナスも表せますから、-128~127までの256通りです。

まあ、固定小数点は割と単純です。それに対して、浮動小数点はなかなか理解するには
やっかいでしょう。

浮動小数点の存在目的は何か、から説明したほうがいいでしょう。
それは同じデータ量で表せる桁数を多くしたいがために他なりません。
桁数を多くするための犠牲が精度です。

2進数ではややこしいので後からご自分で研究してもらうということで、10新数で
説明します。符号無しの正の値で説明します。

10桁の10進数は固定小数点では0~9999999999までが表せます。
桁数としては10桁ですね。
浮動小数点では、これを実数と桁に分けます。例えば、6桁を数値に4桁を桁数に
下とします。すると0から9999999の9999乗まで表せます。9999桁の数字です。
固定小数点の10桁とは桁違いです。ただし、実際の数値は6桁しか表せません、これが
精度と言われます。例えば、1234560は9999桁の範囲で精度が6桁ですから表せます。
しかし、1234561は精度が7桁になるから表せません。1234560の次は12345670になる
訳です。これが精度を犠牲にして桁数を欲張った結果です。
    • good
    • 1

だいぶ省略しているので、あとは調べてください。



(1)
固定小数点数とは、書いて字のごとく、小数点が固定されている表現方法
浮動小数点数とは、書いて字のごとく、小数点が固定されていない表現方法
10進数で言えば
5.43
10.000
92.7
といった感じに、小数点の位置が決まっているのが固定小数点
5.43
1.0000 x 10
927.0 x 10^-1(10の-1乗)
のように、指数形式(「仮数」x「基数」の「指数」乗)で表わし、小数点の位置が固定でない(0乗の位と-1乗の位の間にあるとは限らない)のが浮動小数点数

2進法の場合は基数を2として考える。


(2)
固定小数点数の場合
1.32ビットのうち、何ビットを小数部に使うか決める。
通常は指定されている。今回は指定が無いので勝手に決めるしかない?
2.整数部と小数部にそれぞれの値を入れる。
今回の例なら整数部は11051120,小数部は0


浮動小数点数の場合
1. 32ビットを指数用、仮数用(+符号用)に分割
2. 元の値を指数表現にする。
このとき、正規化するのが普通(一定の約束を守るように、指数と仮数を調整する)
3. 指数、仮数(符号)を1で決めた領域に入れる

浮動小数点数には国際規格があり、多くの場合それが使われている。
しかし、その規格外の浮動小数点数というのも作れるので、この問題文だけでは、変換はできない。


> 課題:11051120 この数を32bitの固定小数点数、浮動小数点数であらわせ

答: 固定小数点数、浮動小数点数についての条件が足りないので無理
    • good
    • 0

(1a)固定小数点数とは何か



http://ja.wikipedia.org/wiki/固定小数点数 を参照。

----------------
(2a)課題の10進数を32bitの固定小数点数であらわすための手順

Windows標準の関数電卓で10進数 11051120 を2進数に変換する。
http://aska-sg.net/glossary/pages/_popup/p_1677m …

結果は24桁のbit列になるので,先頭に8bit分の 00000000 を補って32bit長にする。
答)00000000 10101000 10100000 01110000
  (注:見やすさのために8bit毎に空白を挿入した)

----------------
(1b)浮動小数点数とは何か

ANo.1で紹介されたリンク先を参照。

----------------
(2b)課題の10進数を32bitの浮動小数点数であらわすための手順

先の答を指数と仮数の組合せで表現すると,
 10101000 10100000 01110000 × 2の0乗
=1.0101000 10100000 01110000 × 2の23乗

(1b)のリンク先で解説されている,現在もっとも一般的なIEEE754形式で解答する。

  >単精度の場合: -1の(符号部)乗 × 2の(指数部-127)乗 ×(1+仮数部)

なので,
符号部1bit:0(正の数)
指数部8bit:10010110(10進数計算 指数部=23+127 の結果)
仮数部23bit:0101000 10100000 01110000
よって,
答)0 10010110 0101000 10100000 01110000
  (注:見やすさのため1bit,8bit,7+8+8bitとなるよう空白を挿入した)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!