- ベストアンサー
10進小数→2進小数、16進小数がわかりません!!
10進小数3.375を2進小数および16進小数への変換の仕方が分かりません 教えてください!!!!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
小数点以上と小数点以下を分けて計算します。 2進数の場合 小数点以上では、2で割って商と余りを求める。これを商がゼロになるまで繰り返す。 得られた余りを右から左に並べる。一番右側には小数点が位置する。 例えば11.0の場合 11/2 =>5 余り 1 5/2 =>2 余り 1 2/2 =>1 余り 0 1/2 =>0 余り 1 結果は 1011.0 小数点以下では、2倍して1以上になったら1を引く。これをゼロになるまで繰り返す 1を引いた時は1を、引かなかったときは0を左から右に並べる。 例えば 0.375x2 =>0.75 0.75x2 =>1.5 => 0.5 0.5x2 => 1.0 => 0.0 結果は0.011 11.375(10進)=>1011.011(2進) 16進の場合は前記の2で割る、2倍するところを16で割る、16倍するにすればよい。
その他の回答 (2)
- bin-chan
- ベストアンサー率33% (1403/4213)
整数部の変換はできるんですね? 小数部も同じですよ。 2進数では、1/2+1/4+1/8+(以下略)で表します。 16進数では、1/16+1/256+1/4096+(以下略)で表します。 なので、十進数の0.1は表しきれずに誤差のもと。
お礼
ありがとうございます!!
- ts3m-ickw
- ベストアンサー率43% (1248/2897)
固定小数点での話と理解して回答します。 まず考え方から。 2進数で0.1は、10進数で0.5、 2進数で0.01は、10進数で0.25、 2進数で0.001は、10進数で0.125、ってのは理解できますよね? それぞれ2の-1乗、2の-2乗、2の-3乗です。 0.375は0.25+0.125なので、2進数だと0.011になります。 16進数だと小数点以下を4桁ずつ区切るから、0.0110で0.6。 整数の部分は説明しなくていいだろうから省略。
お礼
ありがとうございます!!
お礼
ありがとうございます!!