從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

補碼轉化為原碼:對該補碼再求補碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM