2012-10-16 67 views
0

我已經在c/C++中學習了一些課程,並且我明白int類型的大小是根據CPU體系結構而有限的。爲什麼計算器和excel在32位系統中顯示的值大於2^31 -1?

對於32位int的最大值是2^324,294,967,295),但是當我使用計算器或excel時,我得到的數目很大,並且比2^32大。

我真的不明白這個細節,這個程序如何打印超過2^23的值。

+3

他們使用像浮點或大數較大的數據類型。 – Mysticial

回答

2

在32位系統中,仍然可以使用大於32位的值。實際上,有BIGINT庫(如GMP)允許您使用任意大的整數的。這些大數字只需在軟件而不是硬件中處理。

[具體x86的示例]其中一個簡單的32位加法採用add指令,其將兩個32位寄存器,64位或BIGINT另外需要在一個時間要添加32位數,手動將攜帶從一個添加到另一個。

參見:

+1

許多體系結構都支持adc指令以達到這個確切目的。 – Dougvj

相關問題