2011-03-02 44 views
4

我正在32位Windows PC上進行一些「早期計算」,並查看了極限。32位定點溢出

現在,2 ** 32爲4,294,967,296,我發現

4294967290 + 5 

是完全確定,

4294967290 + 6 

很恰當溢出。

令我百思不解的是,

429496729 * 10 

溢出,雖然產品,4294967290,在範圍內。

任何有興趣嗎?

+0

你在用什麼環境?你的編譯器/解釋器可能正在做一些不精確的邊界檢查。 – ThomasMcLeod 2011-03-02 14:00:51

+0

這不是固定點,它是整數。定點是具有縮放的整數(例如,100 = 1.00,4323 = 43.23等等)。 – paxdiablo 2011-03-02 14:05:39

+0

你使用哪種編程語言? – starblue 2011-03-02 15:41:59

回答

4

在沒有任何代碼的情況下,我猜429496729被隱式輸入爲有符號整數,其中4294967290太多了。

+0

你打敗了我。結果可能是否定的證明它。 – phkahler 2011-03-02 14:19:33

+0

謝謝同胞們,很對。實際上沒有代碼,但Visual C 6調試器監視窗口(用於我的'探測')將數字整數評估爲已簽名。實際上相當合理。無符號整數都很好。 – 2011-03-04 05:49:17