reverse interger 整數翻轉

2021-10-08 19:41:30 字數 1538 閱讀 3193

一、計算機中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的板子,初始時,每個格仔都是背面朝上。我們可以手動翻轉任意乙個格仔,但其上下左右 如果有的話 的格仔也會隨之一起翻轉,問怎麼翻,可以將所有格仔都翻到正面朝上。當時蠻無聊,那就寫段 試試看吧。這裡,手動翻我們定義為主動,而被動當...