看板 java 關於我們 聯絡資訊
※ 引述《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