3 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
PHP没在语言层面都没有直接提供int32、int64这类明确内存使用的类型。
为什么?因为大部分人都不关心一个数字要占多少内存,也懒得区分不同类型的数字,他们只想有一个统一的数字类型,能完成常用的数值计算就可以了。只有一个类型可以大大减少使用者的心智负担,也简化了实现。(PHP还是区分整形和浮点数,不像JS只有浮点数)
通常要明确使用int32或int64的场景就是网络数据传输,这种情况都不是数值运算了,PHP里要么转成字符串当二进制处理,要么用扩展。JS也类似,WebGL里就有确定大小的数组,因为图形API需要这类特殊的数据格式保证高效率。
补充:明确一下这里说的32位和64位是什么?
当我们说32位、64位时可能在说两种东西:
程序的可用地址空间
语言中的整数类型的位数
PHP有32位和64位版本之分,两者最大差别是进程的地址空间的大小。32位程序的进程地址空间是4G,而Windows下的32位程序有2G的地址空间是内核的,程序实际只有2G的可用内存。
而我上面的答案说的是整数类型的位数,例如C语言有short、int、long、long long之分,而PHP只有一种整形,这个整形具体大小是根据程序是32位还是64位定的,但是一个具体的PHP程序里只有确定的一种。
可用在32位程序里实现64位的整形吗?当然可以,两个32位整数合在一起当作64位用也不是不行,GMP甚至实现了任意精度的整形。
添加回答
举报
0/150
提交
取消