【发布时间】:2013-11-15 23:17:50
【问题描述】:
谁能告诉我这是在做什么:
System.out.println(1 << val);
对于 val = 17,答案为:131072
【问题讨论】:
-
你能解释一下给出的例子吗
标签: java
谁能告诉我这是在做什么:
System.out.println(1 << val);
对于 val = 17,答案为:131072
【问题讨论】:
标签: java
1的二进制表示是00000000000000000000000000000001
1 << 17 会将二进制表示中的最后一个1 向左移动 17 位,这将导致 0000000000000100000000000000000,转换回十进制结果为 131072
【讨论】:
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
这是一个按位运算。基本上,您正在移动最初构成变量的位,然后这些位现在代表一个新数字。
在这种情况下,您向左移动了几个位置,这会突然在您的数字中添加更多位...为其添加更大的值。
【讨论】: