从INT_MAX和INT_MIN看补码

Posted mask_天俊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从INT_MAX和INT_MIN看补码相关的知识,希望对你有一定的参考价值。

刷一道题的时候遇到INT_MAX和INT_MIN的问题,有些东西忘了,梳理一下。

INT_MAX为2147483647,INT_MIN为-2147483648,为什么MIN的绝对值比MAX多1呢,因为计算机中采用的是补码,INT_MAX和INT_MIN是32位整数的最大和最小值,

而表示正数的时候最高一位相当于符号位(并不是真正意义是符号位,只不过在由正转负的时候需要多出一位来辨别正负,这一位按规则变成了1,与反码不同)所以只剩31位,这也就是为啥INT_MAX又写成0x7fffffff,

对于1后面全是0的情况补码定义为-2的n次方,补码求原码就是对补码求补码,所以你看10000000的补码是-128,也就是为什么INT_MIN是-2147483648

补码的转化方式:求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1

补码转化为原码:对该补码再求补码

 

以上是关于从INT_MAX和INT_MIN看补码的主要内容,如果未能解决你的问题,请参考以下文章

原码 反码 补码 练习

INT_MIN和INT_MAX

从java toBinaryString() 看计算机数值存储方式(原码反码补码)

INT_MAX (2147483647) 和INT_MIN (-2147483648)溢出

当int32_t是扩展整数类型且int是32位补码标准整数类型时,(INT32_MIN + 1)是什么

这样讲原码反码补码!学妹连夸我很猛!!