C言語関係掲示板

過去ログ

No.1343 intの最大+1が何故intの最小になるのか

[戻る] [ホームページ]
No.18241

int型、double型関数で疑問!
投稿者---yuppi(2004/11/19 10:37:28)


intの最大に1を+したもの
-2147483648,
intの最小に1を−したもの
2147483647
このようにプログラムでint型変数でINT_MAXに1をたしたものとINT_MINに1をひいたものを出してみたのですが、どうしてint_maxに1を足したものが-2147483648となり、intの最小に1を−したものが2147483647になるのでしょうか???
またdouble型関数でDBL_MAX,DBL_MINと双方の積を出してみると,
DBLmaxの二乗
inf,
DBLminの二乗
0.000000e+00,
上記二つの積
4.000000e+00
となりましたがどうしてこうなるのでしょうか??
考えてもわかりませでした・・・


No.18242

Re:int型、double型関数で疑問!
投稿者---επιστημη(2004/11/19 10:45:12)


>intの最大に1を+したもの
>-2147483648,
>intの最小に1を−したもの
>2147483647
>このようにプログラムでint型変数でINT_MAXに1をたしたものとINT_MINに1をひいたものを出してみたのですが、どうしてint_maxに1を足したものが-2147483648となり、intの最小に1を−したものが2147483647になるのでしょうか???

'2の補数'をご存知でしょうか? 4bitでの'2の補数'表現は:

0000 : 0
0001 : 1
0010 : 2
0011 : 3
0100 : 4
0101 : 5
0110 : 6
0111 : 7
1000 :-8
1001 :-7
1010 :-6
1011 :-5
1100 :-4
1101 :-3
1110 :-2
1111 :-1

4bitで表せる最大の数7に1を加えると-8になってますね。