在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ 為什么 byte b = 0x80;報(bào)告類型不兼容,而byte b = 0x70

為什么 byte b = 0x80;報(bào)告類型不兼容,而byte b = 0x70沒(méi)有錯(cuò)誤信息?

問(wèn)題0:

//編程語(yǔ)言為java
//這句話會(huì)報(bào)告類型不兼容,可能修飾精度的編譯錯(cuò)誤
byte b = 0x80;
//這句話則不會(huì)提示任何錯(cuò)誤 
byte b = 0x70;

問(wèn)題1:
0x80我們用通常的二進(jìn)制(不涉及補(bǔ)碼)的形式表示應(yīng)該是1000 0000,請(qǐng)問(wèn)這里二進(jìn)制中的1是符號(hào)位嗎(因?yàn)槲也孪肷鲜鰡?wèn)題可能和符號(hào)位有關(guān)。。。)?
問(wèn)題2:
如果byte b = -10; 系統(tǒng)是先檢查-10的正負(fù)性然后計(jì)算補(bǔ)碼并存儲(chǔ)在計(jì)算機(jī)中嗎?還是說(shuō)“正數(shù)的補(bǔ)碼是本身,負(fù)數(shù)的補(bǔ)碼是取反+1”這句話本身只是一個(gè)規(guī)律性的總結(jié)所以不能這么理解?
問(wèn)題3:
如何解釋-2 和 4294967294 其實(shí)在內(nèi)存類保存的都是0xFFFFFFFE

回答
編輯回答
撿肥皂

byte 能夠存儲(chǔ)的數(shù)據(jù)范圍是 -128~+127,0x80 已經(jīng)超出這個(gè)范圍了,所以不兼容。

  1. 不是。0x80 是一個(gè) int 類型的整數(shù),對(duì)應(yīng)的是 128,而不是負(fù)數(shù)。數(shù)字字面量除非后面加了 l 或者 L 來(lái)表示是一個(gè) long 類型,否則就是 int 類型。
  2. byte b = -10; 時(shí),系統(tǒng)認(rèn)為 -10 是一個(gè) int,而這個(gè) int 正好在 -128~+127 范圍之內(nèi),所以把 byte 類型的 b 初始化為 -10。否則拋出異常。
  3. 如果內(nèi)存中是 0xFFFFFFFE,那么他比僅僅能表示 -24294967294,它可以表示一個(gè)/幾個(gè)字符,一段音頻片段,一幅圖畫片段,一個(gè)點(diǎn),………等等。至于到底表示什么,在于程序。如果它表示的是一個(gè)變量,那么它具體的值取決于這個(gè)變量類型的定義。

如果你透視了內(nèi)存條某個(gè)空間的值是 10101000001010001010101,它到底表示什么,沒(méi)人知道。賦予它愿意的是程序,是代碼。

2017年6月26日 17:43
編輯回答
刮刮樂(lè)

問(wèn)題1:如果0x80能表示成1000 0000,說(shuō)明這種表示方法是無(wú)符號(hào)二進(jìn)制表示,不涉及符號(hào)位,1不是符號(hào)位。

問(wèn)題2:補(bǔ)碼是被定義的,不是規(guī)律性總結(jié)。byte b = -10這段代碼必然使用經(jīng)過(guò)解析和編譯執(zhí)行,然后存儲(chǔ)數(shù)據(jù),所以先檢查-10的正負(fù)性然后計(jì)算補(bǔ)碼是對(duì)的。

問(wèn)題3:一塊內(nèi)存里有0xFFFFFFFE,這塊內(nèi)存其實(shí)可以被解釋成任意的意思,關(guān)鍵是看程序按那種規(guī)則進(jìn)行解釋。如果把它看作是個(gè)無(wú)符號(hào)的整數(shù),那它就是4294967294,如果把它看作補(bǔ)碼,那就是-2。

2018年3月27日 18:45