第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java整形溢出處理機制。

Java整形溢出處理機制。

ibeautiful 2018-08-29 17:32:08
代碼:    int a = 2147483647;    System.out.println(a);    int b = a + 1;    System.out.println(b);結(jié)果:    2147483647    -2147483648有大神可以給我講講數(shù)值從2147483647變成-2147483648的原理嗎?Java中是如何處理整形溢出的。
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

int類型二進制存儲的第一位為符號位,0表示正數(shù),1表示負數(shù),2147483647這個數(shù)字的的二進制表達為01111111111111111111111111111111,加1以后的值為10000000000000000000000000000000,而10000000000000000000000000000000表示的是-2147483648這個數(shù)字.

查看完整回答
反對 回復(fù) 2018-09-16
?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

這涉及到計算機中數(shù)值的表示方法,計算機中整型數(shù)值是用【補碼】來表示的。
詳情可以參考這里:《原碼, 反碼, 補碼 詳解》

簡單的說,就是用字節(jié)的最高位表示符號的正負,0代表正,1代表負;但是這個符號位也會參與運算,java的int是4個字節(jié),每個字節(jié)8位,所以int的最大值用二進制表示就是:

01111111 11111111 11111111 11111111;

將這個值加一時,從右往左一直進位,結(jié)果是:

10000000 00000000 00000000 00000000,

注意,最高位為1,表示負數(shù),本來這個結(jié)果在原碼里代表-0,但是補碼消除了消除了+0和-0的冗余和歧義,使0只用一個表達方式就是:

00000000 00000000 00000000 00000000

反正放著“10000000 00000000 00000000 00000000”不用白不用,所以就用這個結(jié)果把補碼的表示范圍擴大一位,使其表達為最小值,而且這個值能滿足運算的結(jié)果表示,即(-2147483647) + (-1)等等結(jié)果確實是這個值;比如,如果用反碼,最小值是-2147483647,因為用的是補碼,所以這個值不用白不用,不讓它表示0,那就讓它表示-2147483648(-2147483647 + (-1))吧


查看完整回答
反對 回復(fù) 2018-09-16
  • 2 回答
  • 0 關(guān)注
  • 874 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號