IT
SMA
Terselesaikan

情報1のことで質問です。十進法の数を二進法の浮動小数点で表す問題で、IEEE754と汎用32bitの方法の使い分け方が分かりません。詳しい方教えてください!

Answers

✨ Jawaban Terbaik ✨

使い分け方ではありませんが、違いを説明します。
大きな違いは、指数部を2のべき乗、16のべき乗で表す違いがあります。

■32bitの符号部・指数部・仮数部の領域
・IEEE方式:符号部1bit、指数部8bit、仮数部23bit
・汎用(IBM方式):符号部1bit、指数部7bit、仮数部24bit

■2進数10110.001101を表す場合
IEEE方式:
最初に1が現われるように小数点を動かし、指数を決める
10110.001101
=1.01100011010000000000000×2⁴
指数部は127を加算する:4+127→10000011
仮数部の先頭の1は使わない
⇒1 10000011 01100011010000000000000

汎用(IBM方式):
小数点を基準に4bitごとに区切り、先頭の4bitが現われるように指数を決める
10110.001101
=[1][0110].[0011][01]
=[0001][0110].[0011][0100]
=0.[0001][0110][0011][0100][0000][0000]×16²
指数部は64を加算する:2+64→1000010
⇒1 1000010 000101100011010000000000 

■表現されている数
S:符号部,E:指数部,F:仮数部のとき、表現されている数
・汎用(IBM方式)=(-1)^S×16^(E-64)×F
・IEEE方式=(-1)^S×2^(E-127)×(1+F)

riri

ありがとうございます!学校の問題で16bitで10進数を2進数に倒す問題があるのですがその場合はどちらを使えばいいんでしょうか? 問題には01111を2^0とする。と書いてあるんですけどそれはどう捉えればいいですか?何度もすみません!

GDO

・IEEE754の方が一般的ですが、形式で回答する場合は、符号部、指数部、仮数部に指示があるはずです。
指示の1つが「01111を2^0とする」です。
(簡単に解答できるように指数部に加算しない問題はよくあります)

・「01111を2^0とする」←唐突で、説明がないと(知らないと)意味がわからないですね。
「15(2⁴-1)を加算しなさい」という意味になります。おそらく指数部の指示ですね。
(32bitの場合、127加算しているのと同様です。)

IEEE 754 半精度2進浮動小数点表現 … 16bit
「符号s」(1ビット)「符号e」(5ビット)、「仮数部f」(10ビット)
<参考(数値例あります)>
https://contents.jobcatalog.yahoo.co.jp/qa/list/11270952471/

riri

なるほど!問題解いて理解をすすめてみます!進めてみます!ありがとうございます!!

GDO

参考のサイトの内容には、誤植や余計な説明があると思われましたので、
おかしな部分や意味不明な部分は読み飛ばすか、分からない場合はコメントいれてください。

Post A Comment
Apa kebingunganmu sudah terpecahkan?