与Java语法相关的非常简单的问题

时间:2011-02-01 04:50:35

标签: java java-ee bitwise-operators

有人可以解释一下以下符号中含义符号的含义:

符号 | <<

long high = (System.currentTimeMillis() << 16) | 0x4000 | random.nextInt(4096);

如何计算high的价值?

5 个答案:

答案 0 :(得分:3)

&LT;&LT;是一个按位移位运算符,你可以在这里阅读更多相关内容:http://www.sap-img.com/java/java-bitwise-shift-operators.htm

|是逐位包容的,或者您可以在这里阅读更多信息:http://www.roseindia.net/java/master-java/bitwise-bitshift-operators.shtml

答案 1 :(得分:2)

<<是一个按位移位运算符。请参阅:Java Tutorials: Bitwise and Bit Shift Operators

答案 2 :(得分:2)

<<用于移位,在本例中左箭头用于左移

|用于按位OR,这意味着给定两个操作数,如果其中一个或两个操作数在特定位置具有1,则它将输出位位置设置为

System.currentTimeMillis()返回32位,这将它向左移动

xxxxxxxx yyyyyyyy zzzzzzzz aaaaaaaa
becomes
zzzzzzzz aaaaaaaa 00000000 00000000   (where the right bits are all 0's)

和0x4000

0x4000 in HEX = 01000000 00000000 in BINARY

random.nextInt(4096)只产生一个4096的int,所以它可以产生任意比特的组合

0000???? ????????   // where each ? can be randomly 0 or 1

总而言之,

  • 如何计算高值?

它由这些组件组成

zzzzzzzz aaaaaaaa 0100???? ????????  // binary representation of the long var (4 bytes)
  • z和a是当前时间的低16位
  • 0100就是那个序列
  • 12?是随机生成的(0或1)

答案 3 :(得分:1)

“&lt;&lt;&lt; 16”表示将值的位(currentTimeMillis)向左移动16个位置。

“| 0x400”表示使用位0x400

按位OR运算

答案 4 :(得分:0)

符号是

  

| =或

     

&LT;&LT; =位移到左侧

所以基本上高值是二元运算