FE EXAM

仮数部(数値の細かさ=精度を決めるパーツ)

浮動小数点数で「精度(どこまで細かく表現できるか)」を担当するのが仮数部です。6 ビットの仮数を1つずつクリックして、合計が 1.xxx の形になる仕組みを体験してください。

INTERACTIVE VISUALIZATION
暗黙の 1(ケチ表現)
ビット 1
保存される仮数ビット
101000
計算上の仮数(暗黙の 1 付き)
1.101000
10 進値
1.625
プリセット
各ビットをクリックして 0/1 を切り替えてください。重みは 1/2, 1/4, 1/8, ... と半分ずつ小さくなり、ON のビットの重みを「暗黙の 1」に加算した値が仮数 1.xxx の値になります。
1
1
暗黙
.
21
=0.5
22
=0.25
23
=0.125
24
=0.0625
25
=0.03125
26
=0.015625
計算式
1+1×0.5+0×0.25+1×0.125+0×0.0625+0×0.03125+0×0.015625=1.625
(ON のビットの重みの合計: 0.625、それに暗黙の 1 を足して仮数値 = 1.625
解説

📌
仮数部とは

「1. + ビット列の合計」が仮数1.101000= 1.101000 (二進) = 1.625 (十進)

仮数部とは、浮動小数点数で「先頭の桁の小数」を表すパーツです。値の式 1.M × 2E のうちの 1.M の "M" 部分を担います。

ポイントは 「常に 1.」から始まること。仮数部のビット列は小数点以下の数字なので、たとえば 101000 なら 1.101000(二進)= 1.625(十進)を意味します。

各ビットの重みは、小数点直後から順に 1/2, 1/4, 1/8, 1/16, 1/32, ...と半分ずつ減っていきます。これは 2 進数の小数表現そのもので、ON のビットの重みを全部足したものが仮数の小数部です。

📌
精度を決める仕組み

仮数部のビット数が多いほど、表せる値の刻みが細かくなり、精度が上がります
6 ビット仮数(このページの例): 1.0 〜 1.984375 を 64 段階で表現
IEEE 754 単精度の 23 ビット仮数: 1.0 〜 1.99999988 を約 800 万段階で表現
IEEE 754 倍精度の 52 ビット仮数: さらに細かく、10 進数で約 15〜17 桁の精度

指数部は「値の桁数(スケール)」を担当する一方で、仮数部は「同じスケールの中での精度」を担当します。たとえば 1.0 と 1.5 と 1.625 はどれも同じ「2⁰ のスケール」ですが、仮数部のビット列の違いだけで区別されます。

身近な例で考えると、定規の目盛りです。1cm おきの目盛りより 1mm おきの目盛りの方が、同じ範囲内でも細かい長さを測れます。仮数部のビット数が多いほど、この「目盛りの細かさ」が増します。

📌
正規化との関係

浮動小数点数で値を保存する前に、必ず「1.xxx × 2E」の形に整える操作 = 正規化を行います。これにより、仮数の整数部は必ず 1になります。

どんな値でも仮数の先頭は 1 になるなら、わざわざその 1 をメモリに保存する必要はありません。これを「ケチ表現(暗黙の 1)」と呼びます。
・実際にメモリに保存されるのは 小数点以下の部分だけ(このページの 6 ビット)
・計算時には、先頭に「1.」を補ってから使う
結果として、1 ビット多く精度を稼げる

上のツールでは、左端の橙色の点線の「1」が暗黙の先頭ビットです。クリックできません(常に 1 と決まっているため)。その右の 6 ビットだけが、実際に保存される「仮数部のビット列」です。

押さえておきたいポイント:
・IEEE 754 単精度の仮数部は 23 ビット(暗黙の 1 を含めると 24 ビット相当)
・仮数部のビット列 100... が表す仮数値は 1.100... の二進 = 1.5(暗黙の 1 を補う)
・精度を上げるには、単精度を倍精度に切り替える(仮数 23 → 52 ビット)

関連コンテンツ

仮数部 | Vizigo