PHP和MySql中32位和64位的整形范围是多少
2016-02-18 00:00
507 查看
一个字节有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,PHP_INT_MAX的值为9223372036854775807,跟MySQL中有符号的bigint型的最大值一样.
32位Ubuntu 14.04,PHP_INT_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'); 返回 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位无符号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位双系统VB的32位程序在64位系统中出现文件和注册表自动转向的解决方法
阿里云主机Windows 2008 32位 64位自助正版激活图文教程
Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法
C#中实现在32位、64位系统下自动切换不同的SQLite dll文件
安装SQL server 2005 出现警告 32位ASP.NET已经注册,需要注册64位的解决方法
相关文章推荐
- php实现中文转数字
- php强大的时间转换函数strtotime
- php 生成二维码
- php screw加密
- PHP如何实现异步数据调用
- PHP如何获取客户端真实IP
- github上比较有趣的php项目
- phpmailer用法
- PayPal Express Checkout with PHP-code
- php保留关键字
- ubuntu安装PHP的swoole扩展
- PHP的静态变量
- php mail 发送邮件
- 深入理解PHP的.htaccess文件
- Zephir--最简单的php扩展开发工具
- Ubuntu Pure-Ftpd安装配置
- PHP批量生成图片缩略图
- php实现简单的验证码功能
- php实现一个简单的加密解密处理类
- php图片加水印, 生成缩略图