19/02/02(土) 13:04:00

応用情報>プログラミング言語>変数の型

整数の範囲で +32767 ~ -32768 という場合どうして負のほうが1大きいか

***

0が正のほうで表現されているから。

***
正のほうは0を頭数に入れているから。

最上位ビット0と、最上位ビット1はどちらも表現できる数は同じだが、最上位ビット0のほうは、0という数を含めているので、表現できる数(最大の数値)が少ない。それに対し、最上位ビット1のほうは、0がなく、その分多い数を表現している。

***

正のほうは 0 から数えているのに対し、負のほうは -1 から数えているから。

***

わかりやすくするため、4ビットで考えてみる。

左端ビットが0(正)
0000 ~ 0111
0~7 … 8個

左端ビットが1(負)
1111 ~ 1000
-1~-8 … 8個

左端ビットが0のときと、1 のときではどちらも表現できる数値の数は同じ。
ただ、左端ビットが 0 のときは、10進数の「0」が含まれている。
そのため、正のほうが 0 から始めている分、少ない 7 までが頭数となり、
負のほうは -1 から始めているので正よりも多い -8 までが頭数となる。


[by home2][]