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 1111 1111 1111 1111 1111 1110,
補碼為1111 1111 1111 1111 1111 1111 1111 1111
-2147483647:
原碼為1111 1111 1111 1111 1111 1111 1111 1111,
反碼為1000 0000 0000 0000 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 0000 0000 0000 0000,
因為0只需要乙個,所以把-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
#include
int max = int_max;//最大數
int min = int_min;//最小數
32位int整數範圍
計算機中32位int型別變數的範圍,其中int型別是帶符號整數。正數在計算機中表示為原碼,最高位是符號位 1的原碼為0000 0000 0000 0000 0000 0000 0000 0001 2147483647的原碼為0111 1111 1111 1111 1111 1111 1111 111...
字元型(char)如何轉成整數型(int)
我是乙個新手,這也是我第一次寫部落格,相信很多人應該和我一樣,在剛開始接觸c語言的時候,不知道應該怎麼辦,但是學習的方法就是不停的看書,然後每天都寫一下 不一定要寫得多,哪怕寫乙個程式也可以,最起碼要保持對 的敏感度。當我們在acm上寫題的時候,經常會碰到輸入一串數字,然後對這串數字進行相應的操作,...
超出int範圍的整數匹配與排序方法
輸入一行數字 數字最長可達20位,整數 數字之間用空格分隔 第二行輸入模式數字 長度可達20位整數 按增序輸出第一行匹配的數字 因為是大整數,所以輸入不能用int存,需要用字串儲存,轉化為字串的匹配與排序 先求長排序,若相等再用strcmp 用到的函式 1.strstr 判斷是否是子串 2.strc...