你能解释一下使用按位时会发生什么吗?两个十六进制字符串之间的运算符?

时间:2013-12-27 17:26:55

标签: java bit-manipulation

我从Java教程中得到了这个,我迷路了,我只是不明白当你使用&操作

class BitDemo {
public static void main(String[] args) {
    int bitmask = 0x000F;
    int val = 0x2222;
    // prints "2"
    System.out.println(val & bitmask);
}
}

如何将两个整数(位掩码和val)显示14? 我没有关于你如何操纵它们来制作数字的概念。

3 个答案:

答案 0 :(得分:7)

&安培;是bitwise AND运算符。

让我们将这个运算符的真值表放在两个变量中:

p   q   p & q
0   0     0
0   1     0
1   0     0
1   1     1

您的二进制值等于(您可以使用Integer.toBinaryString(int i)):

00000000001111
10001000100010

应用&收益率:

   00000000001111
&  10001000100010
__________________
   00000000000010

等于2。


  

如何使两个整数(位掩码和val)显示14?

只需将面具设为0xFFFF(仅为'1'),将val设为14(十六进制为0x000E)。

int bitmask = 0xFFFF;
int val = 0x000E;

这是一种可能的解决方案。

答案 1 :(得分:5)

&安培;是按位AND运算符。

a      0x000F = 0000 0000 0000 1111
b      0x2222 = 0010 0010 0010 0010

-----------------------------------
a & b         = 0000 0000 0000 0010 = 2

要获得14,请尝试0x000F & 0x000E

答案 2 :(得分:0)

&Bitwise AND运算符

int a = 4;
int b = 7;
System.out.println(a & b); // prints 4

meaning in an 32 bit system
00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
===================================
00000000 00000000 00000000 00000100