有人能解釋我什麼是下面的符號在以下行的含義:有關Java的語法很簡單的問題
符號| < <
long high = (System.currentTimeMillis() << 16) | 0x4000 | random.nextInt(4096);
怎樣的high
值計算出來的?
有人能解釋我什麼是下面的符號在以下行的含義:有關Java的語法很簡單的問題
符號| < <
long high = (System.currentTimeMillis() << 16) | 0x4000 | random.nextInt(4096);
怎樣的high
值計算出來的?
<<
用於偏移位,在這種情況下向左箭頭爲左移
|
用於按位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)
<<
是一個按位移運算符。參見:Java Tutorials: Bitwise and Bit Shift Operators
而管道(|)是按位或運算,也在該頁面上提及。 – 2011-02-01 04:56:16
< <是一個按位移運算符,你可以在這裏閱讀更多關於這個:http://www.sap-img.com/java/java-bitwise-shift-operators.htm。
|是按位包含的,或者您可以在此處閱讀更多內容:http://www.roseindia.net/java/master-java/bitwise-bitshift-operators.shtml
「< < 16」表示將值(currentTimeMillis)16位的位移到左側。
「| 0x400的」 是指按位或與比特0x400的
的符號是
該值| =或
< < =位左移
所以基本上高值是二進制操作
感謝這麼好的解釋! – 2011-02-01 11:44:49