2011-02-01 66 views

回答

2

<<用於偏移位,在這種情況下向左箭頭爲左移

|用於按位OR,表示給定兩個操作數,如果其中一個或兩個操作數在特定位置上有1,則它將設置輸出位位置爲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)產生一個int略低於4096 ,因此它可以生產出位

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的? s是隨機生成的(0或1)
+0

感謝這麼好的解釋! – 2011-02-01 11:44:49

1

「< < 16」表示將值(currentTimeMillis)16位的位移到左側。

「| 0x400的」 是指按位或與比特0x400的

0

的符號是

該值| =或

< < =位左移

所以基本上高值是二進制操作