回答編集履歴
2
微修正
answer
CHANGED
@@ -13,19 +13,19 @@
|
|
13
13
|
まず、最初のケースの場合、n1は、当然、桁あふれを起こします。
|
14
14
|
n1の入力値を2進数にすると、以下のようになる。
|
15
15
|
|
16
|
-
|
16
|
+
1000001010010101100100010010010111101101010011100:10001010110101010101010101010101
|
17
|
-
なお、
|
17
|
+
なお、:は、下位32との分離のために挿入。以後、2進数は、同様に表記する。
|
18
18
|
|
19
19
|
結果、n1は、10001010110101010101010101010101、10進数ならば-1,965,730,475となる。
|
20
20
|
マイナスの値である為、maxとはならない。
|
21
21
|
|
22
22
|
同様に、最後のケースでは、全て桁あふれを起こし、以下のようになる。
|
23
23
|
|
24
|
-
n1は、2進数で、
|
24
|
+
n1は、2進数で、111111001010001100:10110111000101010111000111000111
|
25
25
|
桁あふれの結果、10進数で-1,223,331,385
|
26
|
-
n2は、2進数で、
|
26
|
+
n2は、2進数で、110010100001110:00010010010011101111000111000111
|
27
27
|
桁あふれの結果、10進数で 307,163,591
|
28
|
-
n3は、2進数で、
|
28
|
+
n3は、2進数で、101000011011:00000001110101001011000111000111
|
29
29
|
桁あふれの結果、10進数で 30,716,359
|
30
|
-
n4は、2進数で、
|
30
|
+
n4は、2進数で、100000010:10110011011000100001000111000111
|
31
31
|
桁あふれの結果、10進数で-1,285,418,553
|
1
注釈の追加
answer
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
2.intは、-2,147,483,648以上、2,147,483,647以下の範囲しか扱えない。
|
6
6
|
これは、2進数の32桁の範囲で、最上位は、符号(+または-)として扱われる。
|
7
|
+
(今回お使いのC言語において。intは、2進数16桁などの場合もある)
|
7
8
|
|
8
9
|
3.扱えない数値が格納される場合、扱える範囲を超える桁は無視される。
|
9
10
|
これは、桁あふれ(Overflow)と呼ばれる現象。
|