2011-12-09 73 views
2

如果我使用Int64類型的變量,它是否可以在所有Windows版本上運行:win95,98,2000,nt,xp,vista,win7?無論是32位還是64位的操作系統,而且不管他們使用什麼CPU?所有Windows版本都支持Int64嗎?

我只想確定,我的程序可以在所有Windows版本上運行。

+0

這裏有一個類似的相關文章:http://stackoverflow.com/questions/4959032/file-size-calculation-int64-and-differences-between-32bit-and-64bit –

回答

9

語言提供的數據類型的大小不受操作系統或硬件平臺的限制。我可以在32位平臺上使用64位整數(或16位或8位或11位)。

+0

有些語言的數據類型的大小不一到目標平臺。確實是Delphi,NativeInt。我想我知道你的意思,但它沒有明確表達。 –

+0

公平點。但是一般來說,數據類型的精度與OS沒有任何關係。 64位數學不需要64位操作系統。 – Joe

+2

確實可以在非常原始的機器上完成任意的精確數學運算。我認爲,你所做的一點是,底層平臺不會限制可操作的操作數的大小。 –

5

Int64變量由32位Delphi編譯器支持。無論在哪個平臺(機器,操作系統等)上執行代碼,對Int64操作數的所有操作都會得到相同的結果。

在32位平臺上,編譯器必須使用特殊的例程來使用可用的32位機器指令執行64位算術運算。當定位64位機器時,編譯器可以使用本機64位指令。無論如何,最終的結果與你無法區分。

請注意,如果您在64位操作系統上執行32位的Delphi可執行文件,那麼您仍將使用32位仿真程序,也就是WOW64。從可執行文件的角度來看,你運行在32位機器上。除非您使用XE2中引入的新的64位編譯器,否則您將生成32位可執行文件。

2

64位整數將在32位操作系統上正常工作。 然而,使用這些數據類型的性能提升只會在使用針對64位操作系統編譯的代碼時纔會出現 - 爲此,您需要使用Delphi XE2。

與此同時,您可以獲得額外的數據容量,但無需額外的執行速度(儘管這通常不會成爲大多數應用程序的考慮因素)。

+0

爲了澄清,64位整數不比32位整數快,但本機64位整數比非本地64位整數快。 –

+1

這是正確的,也許我的描述不夠清楚。更具體地說,超過CPU寄存器大小的操作數比那些沒有的大。因此,64位整數運算在運行64位操作系統(64位代碼)的64位CPU上比在32位系統上執行需要更多操作(=更多CPU週期)以獲得相同結果要快。 – Peter

相關問題