[英]INT max size for 32bit system
假設我們正在談論32位系統。
PHP不支持無符號INT。 這意味着INT值應介於-2,147,483,648和2,147,483,647之間。 INT占用4個字節來存儲32位長度的值。
那是否意味着我只有31位的值和1位的符號? 或者我可以使用整個32位來存儲值?
您正在使用整個32位。 只是默認輸出函數將其解釋為有符號整數。 如果要顯示“原始”值,請使用:
printf("%u", -1); // %u for unsigned
但是,由於PHP在內部處理帶符號的整數,因此如果您希望它們的行為像無符號的整數,則只能對它們使用位算術,而不能對其進行加法/乘法等。
據我所知,在32位系統上,最大可能的正整數是2147483647,上面的值將是浮點值,因為php中的浮點值最多可以取10000000000000。
通常,使用32位整數時,有符號和無符號之間的差異就是您解釋該值的方式。 例如,有符號的和無符號的(-1)+1都將為1,因為有符號是很明顯的,而無符號的則只有在將溢出切斷后才為真。 因此,您確實有32位存儲值,恰好是這樣,所以有1位的解釋與其余部分有所不同。
二進制補碼最常用於存儲數字,這意味着1位不僅僅浪費在符號上。
http://en.wikipedia.org/wiki/Two's_complement
在PHP中,如果某個數字溢出平台的INT_MAX,它將轉換為浮點值。
2147483647是常規值2 ^ 31-1。 1表示符號,-1表示-1,因為我們也表示0。
來自手冊:“整數的大小取決於平台,盡管通常的最大值約為20億(32位帶符號)。64位平台的最大值通常為9E18。支持無符號整數。自PHP 4.4.0和PHP 5.0.5起,整數大小可以使用常量PHP_INT_SIZE確定,最大值可以使用常量PHP_INT_MAX確定。”
是的,如果它將使用無符號整數,那么它將使用32位存儲它,因為在這種情況下您不需要使用符號,但是由於它僅支持有符號整數,因此32位系統將具有31位的值和1位的最大符號s0有符號整數范圍是-2147483648至2147483647。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.