「マイナスの数って、なんで0と1で表せるの!?」って思ったこと、ありません?
それに「浮動小数点数」って単語、聞いただけで“理解拒否反応”が出る人も多いはず。
でも大丈夫。
実は“数字のウラ側のルール”をちょっとのぞくだけで、
めちゃくちゃスッキリ理解できるんです。
この記事では、負の数の表現・小数の表現・BCD(2進化10進)など、
「数字の正体」をやさしく・楽しく解説します!
- 負の数を2進数で表す「補数表現」の考え方がわかる
- 固定小数点数と浮動小数点数の違いを理解できる
- 単精度と倍精度の違いがわかる
- 仮数と指数の関係をイメージで理解できる
- BCDやパック10進数の仕組みがわかる
凄い分かりやすく小学生でもわかるように解説
負の数の表現:「補数」って何者?
コンピュータは0と1しかわからない生き物。
だから「−5」とか言われても「なにそれ?」ってなるんです。
そこで使うのが 補数(ほすう)表現!
マイナスの数を2進数で表すためのトリックです。
たとえば8ビット(=0と1が8個)の世界で考えてみましょう。
| 数字 | 2進数 | 補数表現 |
|---|---|---|
| +5 | 00000101 | 00000101 |
| −5 | 00000101を反転→11111010 → +1 → 11111011 |
つまり、「ビットを全部反転して1を足す」だけでマイナスができちゃうんです。
すごいのはここから
( +5 ) 00000101
+ ( -5 ) 11111011
= 00000000 ← ちゃんと0になる!
ね?引き算しなくてもマイナスを表現できる。
これが補数の魔法
小数の表現:「固定小数点」と「浮動小数点」
次は「小数(0.75とか)」をどう表すか。
ポイントは 「小数点が動くか、動かないか」 です。
固定小数点数(Fixed Point)
小数点の位置があらかじめ決まってるやつ。
- 小数点の場所が固定
- 計算が速い!
- でも表せる範囲がせまい
例)
0001.10(小数点は右から2ビット目) → 1.5
小数点がずっと同じ場所にある感じ。
家の住所が動かない“固定”ってイメージですね。
浮動小数点数(Floating Point)
こっちは小数点が自由に動けるタイプ。
つまり、
「仮数 × 2の指数乗」
という形で表します。
これなら、めっちゃ大きな数も、すごく小さな数も表現可能!
単精度と倍精度って何が違うの?
浮動小数点数には「2種類のサイズ」があります
| 種類 | ビット数 | 仮数部 | 指数部 | 精度(ざっくり) |
|---|---|---|---|---|
| 単精度(float) | 32ビット | 23ビット | 8ビット | 約7桁 |
| 倍精度(double) | 64ビット | 52ビット | 11ビット | 約15桁 |
倍精度は“より細かく正確に”表せるけど、
その分データサイズが2倍になるイメージです。
仮数と指数をざっくり理解!
浮動小数点は、ざっくり言うとこんな式です
仮数 × 2^指数
- 仮数(mantissa):数の中身(1.234みたいな部分)
- 指数(exponent):小数点をどこに置くかの指令書
たとえば
1.10 × 2^3 = 1100 (8 + 4 = 12)
指数が大きいほど、小数点が右にズレて数が大きくなるんです。
BCD(2進化10進)とパック10進数
最後に登場するのは「BCD」と「パック10進数」。
この2つは“人間が見やすい数字”を保つ表現方法です。
BCDとは?
BCD(Binary Coded Decimal)は
10進数の各桁を4ビットずつ2進数で表す方法。
たとえば「25」は
| 10進数 | 2進数(BCD) |
|---|---|
| 2 | 0010 |
| 5 | 0101 |
→ 0010 0101
つまり、
「25」って数字をそのまま2進数で表してる感じです。
パック10進数とは?
BCDをもっと省スペースに詰めたやり方です。
「0010 0101」なら、これを1バイトにギュッとまとめて
→ 0x25(16進数で25)
つまり「パック」=“圧縮したBCD”ってこと!

コメント