繁体   English   中英

Java中的左移0

[英]Left bit shift 0 in Java

考虑:

   int a = 0;
   a |= 1 << a;
   System.out.println(a); 

它打印“1”。 为什么? 我认为将 0 左移任意次数仍然是 0。它从哪里拉出 1?

表达式1 << a; 将转移的值1a的次数。

换句话说,您的值为 1:

0000001

现在,您将整个内容向左移动 0 位。 然后你有:

0000001

然后你有:

a |= 1 << a;

其解析为:

a = 0000000 | 0000001

要么:

a = 1;

您可能混淆了操作数。 如果您试图将值 0 向左移动一位,您需要:

a |= a << 1;

您以错误的方式使用运算符 << 。 它必须是:

int a = 0;
a |= a << 1;
System.out.println(a);

您将文字1左移变量a 变量a的值为零。 1<<0 = 1

所以你刚刚改变了你的变量。 尝试反转变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM