32位和64位区别

范彬

链接:https://www.zhihu.com/question/23408154/answer/24499675

64bit软件和32bit软件最大的区别是64bit的软件可以同时操作大于4GB的内存。注意这里的内存指的是地址空间,而不是物理内存。比如现在有一个10GB的数据库需要进行排序。64bit的软件可以malloc一个10GB的空间把整个数据库“放进”内存然后使用任意经典排序算法,而32bit的软件在malloc时就会崩溃(out-of-memory)。所以32位软件的程序员只能使用复杂的算法显式的分块读入,局部排序,写回数据库,然后重复。这样不仅程序复杂难写,程序员swap内存和文件的算法效率可能也不如OS自动处理来的高效。

另一方面,64bit软件巨大的内存空间也可能加速物理内存的消耗,增加寻址的开销,因此未必总是能够提高性能。

当然最终系统的效率还是取决于物理内存的大小,64bit只是解决了地址空间的瓶颈。

补佳林的回答

64 位软件和 32 位有什么具体区别? - 补佳林的回答 - 知乎 https://www.zhihu.com/question/23408154/answer/24537270

我来说个不好的地方,64位下指针变成8字节,很多c结构体占用空间加大,相当于cpu的缓存变小了。

gggxxx

链接:https://www.zhihu.com/question/23408154/answer/24527239

除了内存访问更重要的还有64位指令集运算。理论上64位运算强于32位运算,但是这依赖于代码优化。

对普通用户来说有2点。

  1. 现在主流的比较新的桌面操作系统都是同时兼容64位程序和32位程序,包括ios也是同时兼容32位和64位。也就是说,用户不管安装32位还是64位程序都没有问题。

  2. 软件编译成64位后并不一定比32位程序运行速度快,很多时候64位程序都慢于32位程序。事实上很多开发者把程序从32位转化成64位,只是做兼容64位而已,根本没有针对64位特性做优化。

很多流行软件的32位版本其实更加稳定和速度快。

匿名用户

链接:https://www.zhihu.com/question/23408154/answer/30793420

多少位是指cpu的寄存器宽度不同,比如16位通用寄存器有一个叫ax,这意味着ax寄存器能存储16bit数据, 在32位中这个寄存器是eax,能存储32bit数据。64位中叫rax。

寻址能力是指cpu寻址总线的宽度。比如16位的x86的u寻址能力是20位,因为寄存器只有16位,所以用seg x16 + offset的方式表示,这就是教科书上所说的逻辑地址。实际上逻辑地址可能产生21位的地址,但是因为寻址总线的宽度只有20所以溢出的一位都会被抛弃。在计算机开机的过程中,bootloader就会读写keyboard controller的60和64端口判断是否开启大于20位的寻址模式。

周全

64 位软件和 32 位有什么具体区别? - 周全的回答 - 知乎 https://www.zhihu.com/question/23408154/answer/24542634

1、对os来说,64位和32位指虚拟地址空间,32位最大4GB,64位理论上16TB,且目前有16TB的

2、对硬件来说,64位和32位指数据宽度,64位一次取8字节,32取4字节

3、对应用程序来说,指使用的指令宽度,基于OS和硬件