`

《JAVA tcp/ip socket》第三章读书笔记

阅读更多

位操作:布尔值编码

我们将int中的各位从0到31进行编号,其中0代表最低位。一般来说,如果一个int值在第i位值为1,其他位都为0的话,该int型整数的值就是2的i次方。因此编号为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 ;

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics