ところで負の整数は,どうように表現すれば良いでしょうか? 日常生活では「−1」のように「−(マイナス記号)」を用います. しかし,これでは「0」「1」以外の記号が必要になり, 2進符号化には直接利用できません. そこで,通常は 2の補数 表現と呼ばれる方法を用いて負の整数を表します. これは,加減算などの演算にあたって, 負の数値を正の数値と同様の方法で扱えるためです.
2の補数表現を用いると, m ビットでは −2m-1から 2m-1−1 の範囲の数を表現できます. この場合, 正の整数を表す際の 2m-1 から 2m−1 の2進符号を −2m-1 から −1 の表現に用います. たとえば 4ビットの場合であれば, 次のように −8 = −23 から 7 = 23−1 が表現されます.
数値 | -8 | -7 | … | -1 | 0 | 1 | … | 7 |
---|---|---|---|---|---|---|---|---|
ビット列 | 1000 | 1001 | … | 1111 | 0000 | 0001 | … | 0111 |
2の補数表現でオーバーフローが起きると,どうなるでしょうか? この表の場合には, 7 に 1 が加わると -8 に, 逆に -8 から 1 が引かれると 7 になってしまいます. つまり,正の数値は負の数値に,負の数値は正の数値に化けてしまいます.
32ビットの場合には, −2147483648 = −231 から 2147483647 = 231−1 の範囲の数が表現可能です.
19.3.1 非負整数 | 19.3.2 負の整数 | 19.3.3 浮動小数点 | ||
発展項目をスキップ | 19.4 符号化 | |||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Fri, 11 Mar 2005 17:28:58 JST (1603d) |