最小整数と最大整数は,リスト1のプログラムで確認できる.この内容を理
解するためには整数の2の補数表現の理解が不可欠である.忘れた者は,私の講義ノート
の2の補数
のところを見よ.
1 #include <stdio.h> 2 3 int main(void){ 4 5 int min, max; 6 7 min=0x80000000; 8 max=0x7fffffff; 9 10 printf("size of int = %d\n",sizeof(int)); 11 printf("min = %d\n",min); 12 printf("max = %d\n",max); 13 14 return 0; 15 }
教科書に示している2つの実数を2進数で表現すると,
![]() |
![]() |
(1) |
![]() |
![]() |
(2) |
![]() |
(3) |
![]() |
(4) |
![]() |
一方,
は循環小数とはならず,2進数の有限の桁数で表現できる.この場合
は,メモリーに格納される値も正確に
である.C言語の倍精度実数型
(double)の場合,2進数の仮数部が53桁以内であれば正確に実数を表現できる.仮数
部は53ビットの情報で表現していることによる.したがって,誤差は54ビット目あたりで
生じ,およそ
となる.C言語のdouble型の演算では,
〜
程度の計算誤差が生じる.この辺の詳しい話は,私の講義ノート
の浮動小数点表示を見て欲しい.
付録にこの辺を確認するプログラムを載せておく.