一個(gè)字節(jié)有8位,所以32位int型占用32位/8位=4個(gè)字節(jié),64位int型占用64位/8位=8個(gè)字節(jié).
32位,64位無(wú)符號(hào)整型最大值:
2^64-1 = 18446744073709551615
2^32-1 = 4294967295
32位,64位有符號(hào)整型最大值:
(2^32)/2-1 = 2147483647
(2^64)/2-1 = 9223372036854775807
減1是因?yàn)檎桶?.
64位Ubuntu 14.04,PHP_INT_MAX的值為9223372036854775807,跟MySQL中有符號(hào)的bigint型的最大值一樣.
32位Ubuntu 14.04,PHP_INT_MAX的值為2147483647,跟MySQL中有符號(hào)的int型的最大值一樣.
echo date('Y-m-d H:i:s', PHP_INT_MAX); 返回 2038-01-19 11:14:07
echo strtotime('2038-01-19 11:14:07'); 返回 2147483647
echo strtotime('2038-01-19 11:14:08'); 32位下返回空
也就是說(shuō),32位系統(tǒng)上PHP的time()最大只能返回2038-01-19 11:14:07的時(shí)間戳.
字段類(lèi)型: `posted` int(10) unsigned NOT NULL DEFAULT '0'
32位MySQL上(64位MySQL也是如此),插入一個(gè)比32位無(wú)符號(hào)int型最大值 2^32-1 = 4294967295 更大的數(shù)會(huì)發(fā)生錯(cuò)誤:
UPDATE `punbb`.`pb_topics` SET `posted` = '4294967296' WHERE `pb_topics`.`id` = 1;
Warning: #1264 Out of range value for column 'posted' at row 1
不過(guò),MySQL可以用8個(gè)字節(jié)的bigint類(lèi)型來(lái)存儲(chǔ)64位整數(shù).
|
數(shù)據(jù)類(lèi)型 |
LP64 |
ILP64 |
LLP64 |
ILP32 |
LP32 |
|
char |
8 |
8 |
8 |
8 |
8 |
|
short |
16 |
16 |
16 |
16 |
16 |
|
_int32 |
N/A |
32 |
N/A |
N/A |
N/A |
|
int |
32 |
64 |
32 |
32 |
16 |
|
long |
64 |
64 |
32 |
32 |
32 |
|
long long |
N/A |
N/A |
64 |
N/A |
N/A |
|
pointer |
64 |
64 |
64 |
32 |
32 |
以上內(nèi)容是小編給大家介紹的32位和64位的整形范圍,希望對(duì)大家有所幫助。


















