刷一道題的時候遇到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
補碼轉化為原碼:對該補碼再求補碼
