亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

無符號右移不是右邊丟棄嗎?

無符號右移不是右邊丟棄的嗎,那像如下代碼所示,一上來就右移24位只剩下高8位了,異動的24位全部丟棄了,那第二次還哪來的位可以用來移動?

int str1 = 0x7ffffff;

randomAccessFile.write((str1 >>> 24) );

randomAccessFile.write((str1 >>> 16) );

randomAccessFile.write((str1 >>> 8) );

randomAccessFile.write(str1 & 0xff);


正在回答

2 回答

低位溢出,高位補0。注意,無符號右移(>>>)中的符號位(最高位)也跟著變,無符號的意思是將符號位當作數字位看待。如:-1>>>1結果為2147483647。這個數字應該比較熟悉,看兩個輸出語句就知道是什么了:

System.out.println(Integer.toBinaryString(-1>>>1));

System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));

輸出結果為:

1111111111111111111111111111111

1111111111111111111111111111111

-1>>>1竟然得到了int所能表示的最大整數,


0 回復 有任何疑惑可以回復我~

java 中的string 是不可變的,write的時候雖然右移了但是并沒有改變 str1本身,而是重新創建了一個右移后的字節,因此不會有你說的問題。不知道這樣講明白么?

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

聽卡農的碼農

嗯,將str1寫進去,不會改變str1的結構。
2017-09-23 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

無符號右移不是右邊丟棄嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號