有人可以解释一下以下符号中含义符号的含义:
符号 | <<
long high = (System.currentTimeMillis() << 16) | 0x4000 | random.nextInt(4096);
如何计算high
的价值?
答案 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)
答案 3 :(得分:1)
“&lt;&lt;&lt; 16”表示将值的位(currentTimeMillis)向左移动16个位置。
“| 0x400”表示使用位0x400
按位OR运算答案 4 :(得分:0)
符号是
| =或
&LT;&LT; =位移到左侧
所以基本上高值是二元运算