初学看int的范围,结果在某个帖子看到这段话,说32位int的MIN值是-2147483647,实在看不懂-0和后面的那个-2147483648哪来的,是说十进制的-0,的二进制原码是1000 0000 0000 0000 0000 0000 0000 0000吗,然后又哪出来的-2147483648呢
不知为何我还发不了帖,他说我没有30个字符,但我应该有40个字符了吧,
表示范围是全0到全1,其中第一位是符号位,这样100...(1+31个0)和000...(32个0)表示的就分别为-0和+0,浪费了一个数字,于是规定100..(1+31个0)表示-2^31,于是就有了最终的[-2^31,2^31-1]这个范围
有帮助望采纳
换个方式说:原码表示就是符号位(1代表正数,0代表负数)+数值位。那么INT是32位,所以能够表示的原码范围不就是-2^31~2^31-1么?
这里说把-0当做最小的数其实是同样的道理哦
额
这句话本来就有问题
因为负数是绝对值越大数越小,32位里最高位是符号位,表示正负,那么绝对值最大的数只能有31位,111 1111 1111 1111 1111 1111 1111 1111,转成十进制就是2147483648,所以负数最小的数是-2147483648
32位的最高位是符号位,表正负