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

為了賬號安全,請及時綁定郵箱和手機立即綁定

循環(huán)中不加0xff 第一個循環(huán)出的結(jié)果是ffffffc4 ffffffbd ffffffbf ffffffce 41 42 43 ,不是老師講的前24位都是零,為什么?

循環(huán)中不加0xff 第一個循環(huán)出的結(jié)果是ffffffc4 ffffffbd ffffffbf ffffffce 41 42 43 ,不是老師講的前24位都是零,為什么?

正在回答

4 回答

首先老師講的有點小錯誤,不是去掉24個0,是去掉24個【0或1】.為什么呢? 我們以GBK編碼的‘慕’為例,如果直接輸出Integer.toHexString( b ),不進行&操作。結(jié)果是:ffffffc4 ?ffffffbd.可以看出&操作去掉的是6個f也就是24個1.不應(yīng)該是24個0嗎?我們知道一個字節(jié)占8位,可以表示兩個16進制數(shù),c4和bd的2進制表示分別為:1100 0100,1011 1101.可以看到他們的第一位都是1.而計算機是以補碼形式存儲數(shù)據(jù)。當(dāng)計算機讀取c4時,發(fā)現(xiàn)第一位是1,所以c4表示的整數(shù)是負(fù)數(shù),要得到該負(fù)數(shù)需要進行取反+1操作得到它表示的正數(shù),然后添加符號位。1100 0100取反+1后是0011 1100,即十進制的60,所以c4表示的是-60。而-60作為一個整形在內(nèi)存中是以ffffffc4存儲的。為了驗證這種想法,我們直接輸出b,也就是b的整數(shù)形式System.out.print( b + " ?" );結(jié)果是:-60 ?-67.什么時候&的作用是去掉0呢,沒錯,這個字節(jié)的二進制存儲中第一位是0,也就是說是個正數(shù)。比如'腣'這個字,它的Integer.toHexString( b )結(jié)果是ffffffc4 ?56,第二個字節(jié)56在內(nèi)存中的二進制數(shù)是0101 0110,所以當(dāng)讀取56這個十六進制數(shù)時,自然當(dāng)做正數(shù)存儲,而正數(shù)的補碼是其本身!

6 回復(fù) 有任何疑惑可以回復(fù)我~
#1

charsandrew

我這里有些疑問:(b & 0xff)運算后得到的數(shù)是32位還是8位? 如果是32位,以16進制打印輸出時為什么不是000000c4, 如果是8位,在api中說toHexString()接受的參數(shù)是int類型,那程序是否會對這個8位的字節(jié)進行類型轉(zhuǎn)換呢?
2016-07-18 回復(fù) 有任何疑惑可以回復(fù)我~
#2

每天一學(xué) 提問者

非常感謝!
2016-10-19 回復(fù) 有任何疑惑可以回復(fù)我~

加入0xff是吧當(dāng)前數(shù)組&0000-0000?0000-0000?0000-0000 1111-1111.這樣取到的是最低八位,既是有效數(shù)字

0 回復(fù) 有任何疑惑可以回復(fù)我~

ff代表8個1,跟32位的字符相與之后不論前24位是0還是1,都會只剩后8位

1 回復(fù) 有任何疑惑可以回復(fù)我~

這是16進制顯示方式 ?你試下

System.out.print(Integer.toBinaryString(變量));

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

循環(huán)中不加0xff 第一個循環(huán)出的結(jié)果是ffffffc4 ffffffbd ffffffbf ffffffce 41 42 43 ,不是老師講的前24位都是零,為什么?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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