浮動小数点数で正負を決めるのは「符号部」と呼ばれる1ビットだけです。このビットを 0/1 で切り替えると、数直線上で値の位置が左右に反転します。
符号部とは、浮動小数点数の先頭にあるたった1ビットのことです。このビットだけで、その数が正か負かが決まります。
浮動小数点数(IEEE 754)は 「符号部 + 指数部 + 仮数部」の3つに分かれていて、符号部はそのうちの最も単純なパーツです。仮数部の「絶対値の大きさ」とは独立に、符号部だけで正負が決まります。
身近な例で考えると、「金額の前の + / − 記号」と同じです。中身の数字(絶対値)が同じでも、頭に付く符号が違えば意味が逆になります。
| 符号ビット | 意味 | 例 |
|---|---|---|
| 0 | 正の数 | +6.5, +0.001, +12345 |
| 1 | 負の数 | −6.5, −0.001, −12345 |
ルールはとてもシンプルです。
・0 → 正の数
・1 → 負の数
覚え方のコツ: 「0 はゼロ(中立)なので、まっすぐ正の側」「1 はマイナス記号の傾き」と関連づけると忘れにくくなります。
なお、整数の2の補数表現でも「最上位ビット = 符号」ですが、ルールが少し違います。
・整数の2の補数: 1だと負だが、絶対値の算出は反転+1が必要
・浮動小数点の符号部: 1だと負だが、残りのビットはそのまま絶対値を表す
上のツールで符号ビットだけを切り替えてみてください。絶対値(=6.5)はそのままで、点が数直線上で 0 を中心に左右にパッと反転するのが見えます。これが浮動小数点の符号部の動きそのものです。
浮動小数点数(IEEE 754 単精度・32ビット)のビット並びは次のようになっています。
・1ビット目: 符号部(S)← このページのテーマ
・2〜9ビット目(8ビット): 指数部(E)
・10〜32ビット目(23ビット): 仮数部(M)
値の計算式は (-1)S × 1.M × 2E-127 と書かれます。最初の (-1)S が符号部の役割で、S=0 なら +1(符号変わらず)、S=1 なら −1(符号が反転)となります。
符号部の性質:
・ビット列の先頭が 1 のとき、その浮動小数点数は負の数
・+0 と −0 は、IEEE 754 では 同じ値(ゼロ)として扱うが、ビット列としては 2 通り存在する(符号ビット 0 と 1 の両方)
・他のビットは符号部とは独立して動く。指数部や仮数部を変えても符号は変わらない