ホームページ >バックエンド開発 >PHPチュートリアル >PHP および MySql の 32 ビットおよび 64 ビット シェーピングの範囲は何ですか、mysql32-bit_PHP チュートリアル
1 バイトは 8 ビットなので、32 ビット int 型は 32 ビット/8 ビット = 4 バイトを占有し、64 ビット int 型は 64 ビット/8 ビット = 8 バイトを占有します。
32ビット、64ビットの符号なし整数の最大値:
2^64-1 = 18446744073709551615
2^32-1 = 4294967295
32ビット、64ビットの符号付き整数の最大値:
(2^32)/2-1 = 2147483647
(2^64)/2-1 = 9223372036854775807
整数型には0が含まれるためマイナス1。
64 ビット Ubuntu 14.04、PHP_INT_MAX の値は 9223372036854775807 で、これは MySQL の signed bigint 型の最大値と同じです。
32 ビット Ubuntu 14.04 では、PHP_INT_MAX の値は 2147483647 で、これは MySQL の signed 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 ビット モードでは空を返します
言い換えると、32 ビット システム上の PHP の time() は、最大でも 2038-01-19 11:14:07 のタイムスタンプしか返すことができません。
フィールドタイプ: `posted` int(10) unsigned NOT NULL DEFAULT '0'
32 ビット MySQL (64 ビット MySQL にも同じことが当てはまります) で、32 ビット unsigned int 型の最大値 2^32-1 = 4294967295 より大きい数値を挿入すると、エラーが発生します。
UPDATE `punbb`.`pb_topics` SET `posted` = '4294967296' WHERE `pb_topics`.`id` = 1;
警告: #1264 行 1 の「posted」列の値が範囲外です
ただし、MySQL は 8 バイトの bigint 型を使用して 64 ビット整数を格納できます。
データ型 |
LP64 |
ILP64 |
LLP64 |
ILP32 |
LP32 |
文字 |
8 |
8 |
8 |
8 |
8 |
短い |
16 |
16 |
16 |
16 |
16 |
_int32 |
該当なし |
32 |
該当なし |
該当なし |
該当なし |
int |
32 |
64 |
32 |
32 |
16 |
長い |
64 |
64 |
32 |
32 |
32 |
長い長い |
該当なし |
該当なし |
64 |
該当なし |
該当なし |
ポインター |
64 |
64 |
64 |
32 |
32 |
上記の内容は編集者が紹介した32ビットと64ビットのプラスチック整形範囲であり、皆様のお役に立てれば幸いです。