2012-12-19 57 views
3

轉換爲GB,就像2 GB。爲什麼PHP_INT_MAX這麼小?

但我現在正在32位Windows上運行,並且我可以將文件放大到比這更好。

那麼爲什麼PHP限制這個數字爲2147483647?如果Windows可以使用更大的數字,那麼PHP是否也能做到這一點?

+0

它受32位安裝限制。在這裏看到更多:[是否有任何方法來最大化PHP \ _INT \ _MAX?](http://stackoverflow.com/questions/2873731/is-there-any-way-to-maximize-php-int-max) – j0k

回答

5

2,147,483,647是最多可以存儲在32位中的數字。你的處理器只有32個插槽來填充比特,比這更大的數字會更復雜,並且需要更多的開銷來計算。 相反,您可以擁有的最小數字是-2,147,483,648,這也是因爲沒有更小的數字可以存儲在32位中。

如果想要在32位系統上對更大的數字進行計算,則必須解決此限制。當然有解決方法,但在一般的web應用程序中,這不太可能需要。

4

2,147,483,647是2 -1有符號的4字節值的最大值。您可能喜歡使用long,即2 -1 = 9,223,372,036,854,775,807。

+0

不,它只有一半:2^31-1。 2^32-1是最大*無符號*值。 – bart

+0

ahrg一個錯字你是對的。 – rekire

9

2147483647是可以用32位存儲的最高有符號數。 PHP以這種方式存儲數字,因爲這就是它們存儲在計算機中的方式。更高,數學和一切都變得更加複雜。 Windows也將使用32位數字。我不確定它如何處理大於2 GB的文件,但我想在這種情況下,它會以某種方式繞過它,並帶有更復雜的代碼。