2013-05-13 25 views
2

我正在將一些代碼從具有32位整數的編譯器遷移到64位。我發現一些假設最高可能整數的舊代碼是2147483647,最低可能是-947483647。數字的意義-947483647

我明白最高的(最大有符號32位整數),但是有誰知道是什麼讓最低的特殊?業務邏輯中沒有任何內容表明此整數(用於ID)不能低於該數字。

除了一些其他代碼,其他代碼在一個名爲INF的變量中使用947483646(無窮大/最大可能數?在帶負值的無窮大的二進制補碼錶示中,-947483647),搜索谷歌幾乎變得很少。

這可能只是一個毫無意義的數字,但也有一些其他命中使用該確切數字的其他整數如怪物惠普在視頻遊戲中(同時尋找其他附近的數字沒有結果),這使得我認爲它背後有一些東西。

回答

2

Int32數據類型沒有無窮大值,所以可以隨機選擇幻數來表示INF。
很自然地爲+ INF選擇最大整數值(2^31-1)。
但是爲什麼(-2^31)未被選爲-INF?
可能是因爲+ INF和-INF在打印時必須有相同的長度(每個10個字符)。

+0

有趣的理論 - 但爲什麼不是所有的9呢?我想這完全可能是因爲按9然後將鍵盤混合到九位數字而獲得的「魔術數字」。這是我最初的假設,直到我發現谷歌上的其他點擊,但當然這可能只是巧合。 – ChrisV 2013-05-14 19:05:49

+0

@ user1180510 - 它最初是(-2^31),但後來通過替換最小數字位數(實際上只有一個)來修正爲所需長度(10個字符)。你看到2^31和這個數字有些相似嗎? ;-) – 2013-05-14 19:27:17

+0

哇,這就是它。好的趕上! – ChrisV 2013-05-15 14:18:46