关于数据取值范围的一点讨论
突然想到对于一个int类型的数据为什么表示范围是-2147483648到2147483647,为什么负数的表示范围会比正数多一个。
经过查阅资料发现:
0000 0000 0000 0000 0000 0000 0000 0000 表示0
1000 0000 0000 0000 0000 0000 0000 0000 表示-0
在计算机中,没有必要存在两个0,所以用上面的正0表示0,而下面的-0表示一个数字,即
2
31
=
−
2147483648
2^{31}=-2147483648
231=−2147483648 ,相当于符号位做了一个补充,用来额外表示一个数字,最高位的1即表示该数字是负数,也表示一个数值位,因此负数的表示范围总是比正数的表示范围多一个。