2
爲什麼System.out.println(-1<<32)
在Java中顯示爲-1
?有什麼根本原因嗎?我希望有人能解釋!爲什麼在Java中System.out.println(-1 << 32)= - 1?
爲什麼System.out.println(-1<<32)
在Java中顯示爲-1
?有什麼根本原因嗎?我希望有人能解釋!爲什麼在Java中System.out.println(-1 << 32)= - 1?
在Java(和JavaScript)中,a << b
自動將b
模數化類型的位長。你用int
這是32位,32%32 = 0,因此沒有改變。你總是可以檢查一個b
多於(位長 - 1)並自動設置爲零而不是移位。
所以它不能用於'長'? – Thilo 2012-03-27 02:48:17
@Thilo:事實上,它可以。答覆已更正,謝謝。 – Ryan 2012-03-27 02:50:07
它適用於使用長文字。 '-1L << 32'等於'-4294967296'。 – jonmorgan 2012-03-27 02:50:46