3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
132
數(shù)字(基數(shù)10)1000_0100
以位(基數(shù)2)和Java存儲(chǔ)int
為32位:
0000_0000_0000_0000_0000_0000_1000_0100
int-to-byte的算法是left-truncate; 算法System.out.println
是二進(jìn)制補(bǔ)碼(二進(jìn)制補(bǔ)碼是最左邊的位是1
,解釋為負(fù)的一個(gè)補(bǔ)碼(反轉(zhuǎn)位)減一。); 因此System.out.println(int-to-byte(
))
是:
interpre-as(if-leftmost-bit-is-1 [negative(invert-bits(minus-one(] left-truncate(
0000_0000_0000_0000_0000_0000_1000_0100
)[)))])= interpret-as(if-leftmost-bit-is-1 [negative(invert-bits(minus-one(]
1000_0100
[)))))= interpret-as(negative(invert-bits(minus-one(
1000_0100
))))= interpret-as(negative(invert-bits(
1000_0011
)))= interpret-as(negative(
0111_1100
))=解釋-AS(負(fù)(124))
=解釋-AS(-124)
= -124田田!!!

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
Java中的字節(jié)是有符號(hào)的,所以它的范圍是-2 ^ 7到2 ^ 7-1 - 即-128到127.由于132高于127,你最終會(huì)回繞到132-256 = -124。也就是說(shuō),基本上加上或減去256(2 ^ 8)直到它落入范圍。
有關(guān)更多信息,您可能需要閱讀兩個(gè)補(bǔ)碼。
添加回答
舉報(bào)