C语言的二进制

发布时间 2023-10-02 09:22:02作者: C羽言

32位最大值为什么是2^31-1

计算机里面是用补码表示数字,因为要区分正负,用最高位来区分,0位正,1为负。

剩下2^31, 除去0就是(2^31)-1

另外1开头是负数,范围就是 -2^31 到 +(2^31)-1

 

int_max二进制如下,首位的0为符号位

0111 1111 1111 1111 1111 1111 1111 1111

如果int_max+1,则会得到

1000 0000 0000 0000 0000 0000 0000 0000

但由于负数是用补码存储,所以它实际上的值是int能表示的最小值

 

更多思路参考:https://www.zhihu.com/question/612717969