int的範圍是-2147483648~2147483647。
計算方法如下:
電腦中32位元int型別變數的範圍,其中int型別是帶符號整數。
正數在電腦中表示為原碼,最高位元為符號位元:
1的原碼為0000 0000 0000 0000 0000 0000 0000 0001
2147483647的原碼為0111 1111 1111 1111 1111 1111 1111 1111
所以最大的正整數是2147483647
負數在計算機中表示為補碼,最高位元為符號位:
-1:原碼為1000 0000 0000 0000 0000 0000 0000 0001,#反碼為1111 1111 11111 1111 1111 1111 1111 11111 1111 1111 1111 1111 11111 1111 1111 1111 111111110111111011111101111101111211121112111211121112111211311211211211211211131222111211211131131313122211121122111311311222111311221112211131122# 1111 1111 1111 1111 1111 1111-2147483647:原碼為1111 1111 1111 1111 1111 1111 11111 1111 1111 1111 1111 11111 110101111 1111 1111 1111010#1010 10100 0 0000 0000 0000 0000 ,補碼為1000 0000 0000 0000 0000 0000 0000 0001所以最小的負數是-2147483647嗎?錯,不是。 在二進位中,0有兩種表方法。 0的原碼為0000 0000 0000 0000 0000 0000 0000 0000,#-0的原碼為1000 0000 0000 0000 0001需要一個,所以把-0拿來當做一個最小的數-2147483648。 -2147483648的補碼表示為1000 0000 0000 0000 0000 0000 0000 0000,在32位元沒有原碼。 注意,這個補碼不是真正的補碼,真正的補碼是1 1000 0000 0000 0000 0000 0000 0000 0000,溢出。 所以帶符號32位元int型別整數為-2147483648~2147483647程式可直接呼叫函數求出範圍:#include <limits.h> #include<stdio.h> int max = INT_MAX;//最大数 int min = INT_MIN;//最小数 int main(){ printf("max = %d\nmin = %d\n", max, min); return 0; }
以上是int型整數的範圍的詳細內容。更多資訊請關注PHP中文網其他相關文章!