我試圖在Java字節變量中設置位。它確實提供了像.setBit(i)
這樣的propper方法。有人知道我怎麼能意識到這一點?在字節中設置特定位
我可以通過一個給定的字節迭代逐位:
if((my_byte & (1 << i)) == 0){
}
但是我不能設置該位置爲1或0,可以嗎?
我試圖在Java字節變量中設置位。它確實提供了像.setBit(i)
這樣的propper方法。有人知道我怎麼能意識到這一點?在字節中設置特定位
我可以通過一個給定的字節迭代逐位:
if((my_byte & (1 << i)) == 0){
}
但是我不能設置該位置爲1或0,可以嗎?
使用按位or
和and
運營商。要設置位:
my_byte = my_byte | (1 << pos);
要取消設置位:
my_byte = my_byte & ~(1 << pos);
要設置位:
myByte |= 1 << bit;
要清除它:
myByte &= ~(1 << bit);
你是什麼意思,這將「設置」有點?假設你試圖訪問第0位,myByte包含11101101.這是什麼意思?我如何控制設定的價值? – Michael 2016-03-06 05:08:40
@邁克爾:設置一點意味着使它1.清除一點意味着使它爲0. – 2016-03-06 08:50:00
你需要的技術是隔離的選擇位和設置或清除。你已經有了表達式來隔離這個位,因爲你正在使用它來測試它。您可以通過對該位進行或運算來設置該位,也可以通過位的1的補碼將該位與位進行清零。
boolean setBit;
my_byte = setBit
? myByte | (1 << i)
: myByte & ~(1 << i);
這比兩個單獨的操作更清潔... – ernesto 2015-03-17 16:46:14
請參閱爲您完成工作的類java.util.BitSet。
設置:myByte.set(bit);
要重置:myByte.clear(bit);
要與布爾填寫:myByte.set(bit, b);
要得到布爾:b = myByte.get(bit);
獲取位圖:byte bitMap = myByte.toByteArray()[0];
另請參見異或運算符 - 它是該武器庫中的第三個強大工具(請參閱維基百科關於掩蔽的文章)。 – Hardryv 2012-03-29 17:35:58