關於 java Integer 的 minimum 跟 maximum 的表示方式
要顯示 java Integer type 的 minimum and maximum 的方式
Integer.MAX_VALUE (2147483647) 及 Integer.MIN_VALUE (-2147483648)
若不用內建涵式, 直覺會用:
1<<31
-1<<31
可結果卻都是 -2147483648
這是由於
1<<31
已發生 overflowed, 在java中下一個位數則是
-1<<31
要得到正確的 MAX_VALUE 可用
(1<<31)-1
其實這是我在作 leetcode (Reverse Integer) 的考題遇到的問題.該題目回傳值跟輸入值是 int, 但側資的輸出有可能是 overflowed 的情形!
真是太狡猾了。
http://goo.gl/7el8Kf
Comments
Post a Comment