給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
原理如圖
每次取出最後一位放入新的變數中尾部,取出操作使用取餘運算子,插入尾部操作可以使舊數向前移1位加上新的尾部,即舊數*10+最後一位,得到新的number,直到x=0,即所有位都反轉成功。
**如下
class
solution
return number;
//沒有溢位返回最後迴圈結束的反轉整數
}}
ps:判斷溢位條件處利用了int資料型別8個位元組,剛好可以表示31位有符號數的特點,一旦產生溢位資料就會發生錯誤,舉個簡單的例子:
乙個位元組最大可以表示無符號數11111111,當隨便加上乙個數字發生了溢位,一定就會變成乙個比他本身小的數,所以無法通過減去剛剛加上的數恢復到原來的數字,即資料發生了錯誤,也就是溢位。
測試結果:
有符號數溢位的判斷
對於兩個w位寬的有符號整數來說,其能夠表示的範圍在 2的w 1次方到2的w次方 1之間。因此有兩種情況能夠使兩個數相加溢位。1 同符號數相加 2 異符號數相減 如果溢位,那麼相加的結果超過了能夠表示的範圍,則有可能出現兩個正數相加得到乙個負數,所以相加的結果小於兩個加數。或兩個負數相加得到乙個正數,...
PHP取整的方法有哪些
下面我們結合簡單的示例給大家總結介紹php取整的四種方法。第一種方法 直接取整,捨棄小數,保留整數 num2 3.6 echo intval num echo intval num2 echo 結果如下 第二種方法 四捨五入取整 num2 3.6 echo round num echo round ...
有個記憶體溢位的問題請教啊!
public mapcheckwithin mapparams,boolean flag byte content fos.tobytearray 業務 catch ioexception e finally return resmap private void close bufferedinpu...