java - 为什么php没有区分32和64位,而python等语言就有区分呢?
黄舟
黄舟 2017-04-10 18:05:38
[PHP讨论组]

为什么php没有区分32和64位,而python等语言就有区分呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
天蓬老师

PHP也有32位和64位区分
见http://windows.php.net/downlo...
不但有32位64位,还有线程安全、非线程安全的区分

PHP中文网

PHP没在语言层面都没有直接提供int32、int64这类明确内存使用的类型。

为什么?因为大部分人都不关心一个数字要占多少内存,也懒得区分不同类型的数字,他们只想有一个统一的数字类型,能完成常用的数值计算就可以了。只有一个类型可以大大减少使用者的心智负担,也简化了实现。(PHP还是区分整形和浮点数,不像JS只有浮点数)

通常要明确使用int32或int64的场景就是网络数据传输,这种情况都不是数值运算了,PHP里要么转成字符串当二进制处理,要么用扩展。JS也类似,WebGL里就有确定大小的数组,因为图形API需要这类特殊的数据格式保证高效率。

补充:明确一下这里说的32位和64位是什么?

当我们说32位、64位时可能在说两种东西:

  1. 程序的可用地址空间

  2. 语言中的整数类型的位数

PHP有32位和64位版本之分,两者最大差别是进程的地址空间的大小。32位程序的进程地址空间是4G,而Windows下的32位程序有2G的地址空间是内核的,程序实际只有2G的可用内存。

而我上面的答案说的是整数类型的位数,例如C语言有short、int、long、long long之分,而PHP只有一种整形,这个整形具体大小是根据程序是32位还是64位定的,但是一个具体的PHP程序里只有确定的一种。

可用在32位程序里实现64位的整形吗?当然可以,两个32位整数合在一起当作64位用也不是不行,GMP甚至实现了任意精度的整形。

巴扎黑

以前没有,后来就有了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号