Riz*_*Riz 4 java bit-shift bitwise-operators
我有一个简单的问题:
int a = 0;
a |= 1<<a;
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)
打印"1".为什么?我认为左移位0任意次数仍为0.哪里可以拉出1?
Mik*_*sen 11
表达式1 << a;将移动值1,a次数.
换句话说,您的值为1:
0000001
Run Code Online (Sandbox Code Playgroud)
现在,你将整个事物向左移动0位.然后你有:
0000001
Run Code Online (Sandbox Code Playgroud)
然后你有:
a |= 1 << a;
Run Code Online (Sandbox Code Playgroud)
哪个解决方案:
a = 0000000 | 0000001
Run Code Online (Sandbox Code Playgroud)
要么:
a = 1;
Run Code Online (Sandbox Code Playgroud)
你可能把操作数混淆了.如果您尝试将值0向左移一位,则需要:
a |= a << 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9964 次 |
| 最近记录: |