演習の解答例
演習 1
0.1 の ビット表現は となります。 これに IEEE 754 の正規化をすると となり、指数部は 123 = 0x7B、仮数部は 0x4CCCCD となります。
JavaScript で確認してみます。
const buffer = new ArrayBuffer(4);
const view = new DataView(buffer);
view.setFloat32(0, 0.1);
const bits = view.getUint32(0);
console.log(bits.toString(2).padStart(32, "0"));
実行結果は以下のようになります。
00111101110011001100110011001101
演習 2
省略
演習 3
32 ビット では、指数部の最大値が ビット表現で 11111110
のとき 、仮数部の最大値が ビット表現で 11111111111111111111111
のとき となります。
となりますが、丸め誤差により 3.40282347E+38
が最大値となります。
3.40282347E+38
の ビット表現をプログラムで確認してみましょう。
const buffer = new ArrayBuffer(4);
const view = new DataView(buffer);
view.setFloat32(0, 3.40282347E+38);
const bits = view.getUint32(0);
console.log(bits.toString(2).padStart(32, "0"));
実行結果は以下のようになり、最初の ビット表現と一致していることが確認できます。
01111111011111111111111111111111