ホームページ >バックエンド開発 >PHPチュートリアル >32 ビットおよび 64 ビットの PHP および MySQL の整数範囲

32 ビットおよび 64 ビットの PHP および MySQL の整数範囲

WBOY
WBOYオリジナル
2016-06-23 13:16:27984ブラウズ

1 バイトは 8 ビットなので、32 ビット int 型は 32 ビット/8 ビット = 4 バイトを占有し、64 ビット int 型は 64 ビット/8 ビット = 8 バイトを占有します。 32 ビット、64 ビットの符号付き整数の最大値:

(2^ 32)/2-1 = 2147483647

(2^64)/2-1 = 9223372036854775807

整数型には 0 が含まれるため、1 を引いたもの。

64 ビット Ubuntu 14.04、PHP_INT_MAX の値は 922 3372036854775807、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 のタイムスタンプのみを返すことができます。 64 ビット MySQL の場合は true)、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 ビットを格納できます整数。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。