数値の型と扱える値の範囲
変数の型と扱える数値の範囲の説明として、 char,short int,int,long int の整数型、 float, double の実数型 を説明し、整数 演算子 整数の計算は、整数で行われることによるトラブル事例を紹介。
N bit の整数の扱える範囲
IMG n /cgi-bin/mimetex.cgi?0\sim{2^{N}-1} を説明。
2の補数表現
コンピュータの中では、負の数の扱いには、2の補数が使われ、 最上位ビットを符号ビットに使う。 2の補数とは、2進数 IMG n /cgi-bin/mimetex.cgi?x のbit反転に1を加える方法。 bit反転を IMG n /cgi-bin/mimetex.cgi?\overline{x} としたら、 IMG n /cgi-bin/mimetex.cgi?x+\overline{x}=1111,1111 (8bit)の場合。 IMG n /cgi-bin/mimetex.cgi?x+\overline{x}+1=1,0000,0000 となるが、先頭の1は覚えられないので、 IMG n /cgi-bin/mimetex.cgi?x+\overline{x}+1\simeq{0} よって、2の補数 IMG n /cgi-bin/mimetex.cgi?\overline{x}+1 は IMG n /cgi-bin/mimetex.cgi?-x を表現するのに都合がいい。
よって N bit の2の補数表現で扱える数値の範囲は、 IMG n /cgi-bin/mimetex.cgi?-2^{N-1}\sim(2^{N-1}-1) となる。
数値の範囲のトラブル事例として、2000年問題の32bit版ということで、 2037年問題(正確には2038年)を紹介する。
類似ネタ
- 2038年問題(旧unix系で時間を1970年から IMG n /cgi-bin/mimetex.cgi?(2^{31}-1) 秒までしか時間を扱えない問題)
- 2036年問題(NTPが1900年から IMG n /cgi-bin/mimetex.cgi?(2^{32}-1) 秒までしか時間を扱えない問題)
- 20XX年問題特集
- 2004年銀行系トラブル事例(2038年問題・中間地点)