Re: [問題] Java Puzzlers Quiz 3

看板java作者 (我要看Naruto >_<)時間19年前 (2006/04/10 03:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《PttHuge (我要看Naruto >_<)》之銘言: : public class LongDivision { : public static void main(String[] args) { : final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; : final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000; : System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY); : } : } <D> 延伸問題 自己嘗試做一個簡單的overflow detect (google一下可以發現JVM 也不會幫你做,所以才要自己做:p) final int INT_MAX = 0x11111111; if(INT_MAX & int(MICROS_PER_DAY >> 8) != 0) System.err.println("Overflow"); if(INT_MAX & int(MILLIS_PER_DAY >> 8) != 0) System.err.println("Overflow"); 結果發現兩個都會overflow,有人可以解釋一下嗎? @_@ 不用 final long LONG_MAX 是因為 & 不能用於long 所以改用int 並搭配將MICROS_PER_DAY及MILLIS_PER_DAY right shift 8 bit -- 嘿嘿..我是huge.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.206.35
文章代碼(AID): #14ELrTNV (java)
討論串 (同標題文章)
文章代碼(AID): #14ELrTNV (java)