一、計算機中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
在程式設計中怎樣使用最大和最小的數呢?c語言在limits.h中包含了極大和極小的整數值,直接呼叫就可以了。
#include
#include
int max = int_max;//最大數
int min = int_min;//最小數
二、vector常見用法總結
三、例項
將給出的整數x翻轉。
例1:x=123,返回321
例2:x=-123,返回-321 你有思考過下面的這些問題麼? 如果整數的最後一位是0,那麼輸出應該是什麼?比如10,100
你注意到翻轉後的整數可能溢位嗎?假設輸入是32位整數,則將翻轉10000000003就會溢位,你該怎麼處理這樣的樣例?丟擲異常?這樣做很好,但是如果不允許丟擲異常呢?這樣的話你必須重新設計函式(比如新增乙個額外的引數)。
class solution
return res;}};
歷屆試題 矩陣翻硬幣 (大整數)
歷屆試題 矩陣翻硬幣 時間限制 1.0s 記憶體限制 256.0mb 錦囊1 錦囊2 錦囊3 問題描述 小明先把硬幣擺成了乙個 n 行 m 列的矩陣。隨後,小明對每乙個硬幣分別進行一次 q 操作。對第x行第y列的硬幣進行 q 操作的定義 將所有第 i x 行,第 j y 列的硬幣進行翻轉。其中i和j...
翻硬幣問題
翻硬幣問題 翻硬幣問題有好幾種。其中的一種是這樣的 桌子上有q m n枚硬幣,m正面朝上,n枚反面朝上,每一輪翻p枚,在每一輪翻幣的時候,被翻的同一枚硬幣只能翻一次。問最少多少次能把所有的硬幣翻成全部正面或者反面朝上?根據問題的描述,問題實際上隱含 m n p 0,m n p。這個問題往往是計算機程...
翻格仔遊戲
前幾天,朋友玩乙個解謎類的遊戲。中間有乙個關卡,大概是這樣的 有乙個5 5的板子,初始時,每個格仔都是背面朝上。我們可以手動翻轉任意乙個格仔,但其上下左右 如果有的話 的格仔也會隨之一起翻轉,問怎麼翻,可以將所有格仔都翻到正面朝上。當時蠻無聊,那就寫段 試試看吧。這裡,手動翻我們定義為主動,而被動當...