二進法

日常生活では、10ごとに位が上がる十進法が一般的に使われる。

0, 1, 2, 3, ..., 9, 10, 11, ...

十進法で表わした数のn桁目は10^(n-1)を表わしている。

2583 = (2 * 10^3) + (5 * 10^2) + (8 * 10^1) + (3 * 10^0)

二進法では、2ごとに位が上がる。

0, 1, 10, 11, 100, 101, 110, 111, 1000, ...

十進法と二進法の区別を付けるために、二進表記した数には最後に(2)を付けることにする。

10011(2) = (1 * 2^4) + (0 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = 19

一般に、コンピュータの内部では数の表現に二進法が用いられている。

2の補数

a + b = 2^N のとき、bをaの「2の補数」という。

負の数を表わすのに2の補数が用いられる。

ある数nの2の補数は、nの全てのビットを反転させた後、1を加えることによって得られる。

例えば、-2 のビット表現を求めよう。(8ビットで整数を表わすとする) 2 は 00000010(2) であるので、全てのビットを反転させた 11111101(2) に 1 を足した 11111110(2) が -2 を表わす。

00000000(2) = 0
00000001(2) = 1
...
01111111(2) = 127
10000000(2) = -128
10000001(2) = -127
...
11111110(2) = -2
11111111(2) = -1

負の数に2の補数を用いると、減算を「負の数の加算」として計算できるという利点がある。

浮動小数点数

IEEE754 規格では、浮動小数点数を32ビット(単精度)または64ビット(倍精度)で表現する。

32ビットの場合について説明する。

[符号ビット 1ビット][指数部 8ビット][仮数部 23ビット]

浮動小数点数は (-1)^s * F * 2^E のように表わされる。 F が仮数フィールドに、E が仮数フィールドに対応する。

仮数部

仮数フィールド F は、仮数部の対応は次のようになる。

仮数部を m_22 m_21 ... m_0 とすると

F = 1.m_22 m_21 ... m_0(2)

指数部

指数部には、実際の指数 E に 127 を加えた値が入る。

これは、数の大小比較を容易にするためである。

100.25 = 64 + 32 + 4 + (1/4) = 1100100.01(2) = 1.10010001 * 2^6

符号ビットは 0

指数部は、6 + 127 = 133 に相当する数を入れる。よって 10000101

仮数部は、1.10010001 の先頭の 1 を省略して 10010001000000000000000

よって、100.25 を IEEE754 の表記法で表わすと 01000010110010001000000000000000 になる。

  • このエントリーをはてなブックマークに追加
Feedforce Developer Blog

新しいブログへ移行しました!こちらもよろしくお願いします。