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

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

在讀取16進制數(shù) 0x7fffffff時,buf[i]的值為-1,為什么

byte[]?buf?=?new?byte[8?*?1024];
int?bytes?=?in.read(buf,0,buf.length);
int?j=1;
for?(int?i?=?0;?i?<?bytes;?i++){
????if?((buf[i]?&?0xff)?<=?0xf){????????????????????//此處?如果沒有進行與運算,直接打印buf[i]結(jié)果為-1
????????System.out.print("0");
????}
????System.out.print(Integer.toHexString(buf[i]?&?0xff)+"?");
????if(j++?%?10?==?0){
????????System.out.println();
????}
}

文件的內(nèi)容為 A B?0x7fffffff?

正在回答

1 回答

問題和代碼無關(guān),你只要輸出System.out.println(0xffffffff)就會得到-1;原因是int 是有符號位,占4個字節(jié),而0xffffffff是以int類型存儲的,int是有符號的。即1111 1111 1111.......第一位被用來記錄符號,所以這里就被解釋為負號了,而Java在編碼時,存儲的是負數(shù)的補碼,所以你的1111.....就成了1000......+1就是10000.....1就是-1啦。

所以16進制最大的數(shù)是0x7fffffff.

2 回復 有任何疑惑可以回復我~
#1

恒10769 提問者

懂了,感謝
2018-07-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

在讀取16進制數(shù) 0x7fffffff時,buf[i]的值為-1,為什么

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

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

幫助反饋 APP下載

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

公眾號

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