PHP 와 MySql 중 32 비트 와 64 비트 의 성형 범 위 는 얼마 입 니까?


한 바이트 에 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
1 을 뺀 것 은 정형 이 0 을 포함 하기 때문이다.
64 위 Ubuntu 14.04,PHPINT_MAX 의 값 은 9223372036854775807 로 MySQL 에 기호 가 있 는 bigint 형의 최대 값 과 같 습 니 다.
32 위 Ubuntu 14.04,PHPINT_MAX 의 값 은 2147483647 로 MySQL 에 기호 가 있 는 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'); 복귀
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 비트 부호 없 는 int 형 최대 치 2^32-1=4294967295 보다 더 큰 수 를 삽입 하면 오류 가 발생 합 니 다.
UPDATE `punbb`.`pb_topics` SET `posted` = '4294967296' WHERE `pb_topics`.`id` = 1;
Warning: #1264 Out of range value for column 'posted' at row 1
그러나 MySQL 은 8 바이트 의 bigint 형식 으로 64 비트 정 수 를 저장 할 수 있 습 니 다.
데이터 형식
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
위 내용 은 소 편 이 소개 해 드 린 32 위 와 64 위의 성형 범위 입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기