ベストアンサー
>半精度浮動小数点数をつかって2進数を表す時のバイアス値は15と考えて良いでしょうか → そうですね >できるだけ分かりやすく → <説明> 実数(10進数)を浮動小数点IEEE754(半精度)に変換する 10進数から2進数への変換 小数点以上と未満とで求め方を変えた方が楽だと思います ・小数点以上は0になるまで2で割っていく(余りを並べ、逆順に読む) ・小数点未満は0になるまで2を掛けていく(整数を並べ、正順に読む) ★小数点未満の計算時には整数(即ち、1)に成ったら1を減算し、0で終了 例として、 実数(dec)-11.25 を浮動小数点IEEE754(半精度)書式に変換すると → (hex)C9A0 1.絶対値にする 10進数から2進数へ変換は正の値で行う(負の値では面倒) (-)11.25 → (+)11.25 × ー1 ・・・(★1)符号は記憶 2.10進数から2進数へ変換 11.25 (dec) → 1011.01 (bin) 小数点以上と未満とで求め方が違います ・小数点以上は0になるまで2で割っていく(余りを並べ、逆順に読む) ・小数点未満は0になるまで2を掛けていく(整数を並べ、正順に読む) ★小数点未満の計算時には整数(即ち、1)に成ったら1を減算し0で終了 2.1.小数点以上 (dec)11. → (bin)1011. 11 (2 ───────── 5 ……… 余り 1 5 (2 ───────── 2 ……… 余り 1 2 (2 ───────── 1 ……… 余り 0 1 (2 ───────── 0 ……… 余り 1 2.2.小数点未満 (dec).25 → (bin).01 .25 *2 ────────── 0.50 ………… 整数部 0 0.50 *2 ────────── 1.00 ………… 整数部 1 1.00 - 1 (★) ────────── 0.00 ……… 終了 3.2進数変換から16ビット浮動小数点数へ変換 IEEE 754 半精度2進浮動小数点表現 符号部: 1bit 指数部: 5bit (バイアス15) 仮数部: 11bit (明示的には10bit) 3.1.符号部 → (bin)1 10進数のー11.25は[負]の実数なので 1 3.2.仮数部 → (bin)0110 1000 00 仮数部は (1)小数点以上が1になる様にビットシフトする。 (2)最上位ビットを削除(暗黙の1ビット) 1011.01 × 2^⁰ → 1.01101 × 2^³ ……………… ビットシフト → .01101 × 2^³ ……………… 暗黙1bit除去 → .01101 0000 0 × 2^³ …… 10bitに整形 3.3.指数部 → (bin)10010 指数部はバイアス値に「3.2.仮数部」でビットシフト処理にて求めたn乗を加える → (dec)15 + (dec)3 = (dec)18 → (bin)10010 3.4.[符号部] + [指数部] + [仮数部] を連結 [1] + [10010] + [0110100000] → 1100 1001 1010 0000 → C9A0(hex) ──
この回答はいかがでしたか? リアクションしてみよう
多少エスパー入れてますが バイアスだけに絞っての説明は難しかった。仮数部の右シフト左シフトが発生するから、指数部は中間値(バイアス)を持たせる必要性があります。
その他の回答(1件)
浮動小数点数がnビットの指数部の場合には普通、『nビットのトップビットが1になっている値-1』を指数に加算します。半精度浮動小数点数は普通、指数部が5ビットになります。なのでバイアス値は15と考えられます。