In twos-complement notation, whenever the high-order bit is 1, the number is negative. So the biggest positive number is
01111111 = 127
and the smallest negative number is
10000000 = -128
The same thing happens for int
, but its range is much larger. The biggest positive int is
01111111 11111111 11111111 11111111 = 2147483647
and the smallest negative int is
10000000 00000000 00000000 00000000 = -2147483648
As you can see, in both cases, the smallest negative is 1 more than the biggest positive.
You might be wondering, If there are the same number of bits other than the sign bit, why are there more negative numbers than positives? That's because you're not counting 0
. It has 0 in the high-order bit, so it's considered positive in this notation. When you include that, there are 128 negative chars, and 128 non-negative chars, and they balance equally.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…