信息编码:位操作布尔值编码
位操作:布爾值編碼
?
位圖(Bitmaps)是對布爾信息進行編碼的一種非常緊湊的方式,通常用在協議中。位圖的主要思想是整型數據中的每一位都能夠對一個布爾值編碼--通常是0表示false,1表示true。要操縱位圖,你需要了解如何使用Java中的"位操作"方法來設置和清除單獨的一位。掩碼(mask)是一個的整數值,其中有一位或多位被設為1,其他各位被清空(即,設為0)。在這里我們處理的是int大小的位圖和掩碼(32位),但這些方法對其他類型的整數也同樣適用。
?我們將int中的各位從0到31進行編號,其中0代表最低位。一般來說,如果一個int值在第i位值為1,其他位都為0的話,該int型整數的值就是2i。因此編號為5的位表示32,編號為12的位表示4096,等等。這里有一些掩碼聲明的例子:
final int BIT5 = (1<<5);
final int BIT7 = 0x80;
final int BITS2AND3 = 12; // 8+4
int bitmap = 1234567;
要設置int變量中的特定一位,需要將該int值與特定位對應的掩碼進行按位或(bitwise-OR)操作(|):
bitmap |= BIT5;
// bit 5 is now one
?要清空特定一位,則將該整數與特定所對應的掩碼的按位補碼(特定位為0,其他位為1)進行按位與(bitwise-AND)操作。Java中的按位與操作符是&,而按位補碼操作符~:
bitmap &= ~BIT7;
// bit 7 is now zero
?也可以通過將相應的所有掩碼進行按位或操作,一次設置和清空多位:
// clear bits 2, 3 and 5
bitmap &= ~(BITS2AND3|BIT5);
?要測試一個整數的特定位是否已經被設置,可以將該整數與特定位對應的掩碼進行按位與,并將操作結果與0比較:
boolean bit6Set = (bitmap & (1<<6)) != 0;
相關下載:
Java_TCPIP_Socket編程(doc)
http://download.csdn.net/detail/undoner/4940239
?
文獻來源:
UNDONER(小杰博客) :http://blog.csdn.net/undoner
LSOFT.CN(瑯軟中國) :http://www.lsoft.cn
?
轉載于:https://www.cnblogs.com/wuyida/archive/2012/12/19/6301080.html
總結
以上是生活随笔為你收集整理的信息编码:位操作布尔值编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IGT中国
- 下一篇: 数学/找规律/sgu 118 Digit