Cod*_*ave 2 java bitwise-operators
我正在研究名为Beginning Android Games的书.我注意到的一件事是:
int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK)
>> MotionEvent.ACTION_POINTER_ID_SHIFT;
Run Code Online (Sandbox Code Playgroud)
这是我见过类似变量的第一次,所以我不知道它是做什么的.我在java中运行代码并创建了一些示例.
如果我运行此代码:
int i = 10 >> 500;
System.out.print("Answer " + i);
Run Code Online (Sandbox Code Playgroud)
答案是0?这是为什么?
如果我运行此代码:
int i = 10 & 500;
System.out.print("Answer " + i);
Run Code Online (Sandbox Code Playgroud)
起初我认为这是价值的连接所以我会假设i = 10500但事实并非如此.答案是一样的.还是0?谁知道这里发生了什么?
&是按位运算符,而&&是条件运算符.您正在使用按位运算符.
AND运算符指定必须对要收取的结果收取信号A和B的费用.因此,对字节10和6进行AND运算得到2,如下:
a = 0000 1010 (10)
b = 0000 0110 (6)
---- ----
r = 0000 0010 (2) // a&b
Run Code Online (Sandbox Code Playgroud)
有关更多示例,请参见此处
按位和位移算子
~ Unary bitwise complement
<< Signed left shift
>> Signed right shift
>>> Unsigned right shift
& Bitwise AND
^ Bitwise exclusive OR
| Bitwise inclusive OR
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |