关注+星标公众,不错过精彩内容

转自 | 程序喵大人

想必大家都遇到过这样的问题:安装某个软件的时候,出现提示选择32位版本还是64位版本?

我们也可以查看自己的电脑是32位还是64位系统:

Windows

Linux

大家可能知道32位和64位和系统有关,但其实 32 vs 64 可以有多重含义。

一般情况下,有以下几种可能:PU、程序、操作系统。

今天我来给大家一一介绍下:

CPU

首先,我们要先从什么是位数讲起。

计算机中的位数指的是CPU一次能处理的最大位数。在Intel由16位的286升级到386的时候,为了和16位系统兼容,它先推出的是386SX,这种CPU内部预算为32位,外部数据传输为16位。直到386DX以后,所有的CPU在内部和外部都是32位的了。

有些人往往会弄不清在计算机中出现的“位”和Byte,KB,MB等有何关系,8位等于一字节Byte,即8bit=1B。32位处理器每次最多处理4Byte(32bit),同理,64位处理器每次最多处理 8Byte(64bit) 。

32位架构的CPU数据总线宽度是32位,每次可以传输32位数据,可以计算4个字节。

64位架构的CPU数据总线宽度是64位,每次可以传输64位数据,可以计算8个字节。

  数据总线  

数据总线是CPU与内存或其它器件之间的数据传输的通道,数据总线的宽度决定了CPU和外界的数据传输速度,每根线可以传输1位二进制数据,32根线每次就可以传输32位数据,64根线每次就可以传输64位数据。除了数据总线外还有地址总线和控制总线。

  地址总线  

CPU通过地址总线来指定存储单元,地址总线的宽度决定了CPU所能访问的最大内存空间大小,1根地址线能访问的内存空间是1bit,32根线访问的最大内存空间是4G,64根线...太大了。

  控制总线  

CPU通过控制总线对外部器件进行控制,主要通过控制总线来传输控制信号和时序信号,控制总线是各种信号线的集合,是计算机各部件之间传送数据、地址和控制信息的公共通道,控制总线的宽度决定了CPU对外部器件的控制能力。

总体来说,CPU作为总线的主控,通过控制总线向各个外部器件发送控制信号,通过地址总线访问内存地址,通过数据总线传输数据。

CPU的位数越大,可以计算的数值就越大,64位CPU可以执行更大数字的运算,但这个优势在普通应用上不太明显,普通应用也没必要进行太大数字的运算,但是对于数值计算较多的应用就非常明显。同时64位CPU有更大的寻址空间。

运算速度不同:64位CPU的通用寄存器数据宽度是64位,处理器依次可以读取64位数据,比32位多一倍,运算速度理论上会提升一倍。像两个不同的打工人一样,打工人A一次性可以搬32块砖,打工人B一次性可以搬64块砖,谁搬砖的速度快,自然你更喜欢用谁。由于运算速度提升,64位CPU可以在多任务中运行顺畅,来回切换也不会卡顿,王者荣耀都顺畅多了。

那么有朋友要问了,既然位数越高处理器运算速度越快,为什么不用128位、256位的CPU?因为位数越高,处理器芯片的设计也就越复杂,当前的科技水平还无法制造这么复杂的CPU。

程序

指的是32位程序和64位程序。

32位指令的程序一般来说可以在64位机器上运行,可以兼容。

64位指令的程序不可以在32位机器上运行,因为32位的寄存器存不下64位的指令。

注意其实还有16位的程序,但16位的程序不能运行在64位的机器上,因为没有提供兼容机制。

操作系统

操作系统其实也是程序,64位的操作系统使用的是64位的指令,不能安装在32位机器上。

  设计初衷不同   
64位操作系统的设计初衷是为了满足需要大量内存和复杂浮点数运算的需求,一般用在科学计算、人工智能、平面设计、视频处理、3D动画和游戏数据库以及各种网络服务器等领域中。


  安装环境不同  

64位操作系统只能安装在64位CPU的机器上,同时需要配合64位的程序才能发挥最佳性能,32位操作系统既可以安装在32位CPU的机器上,也可以安装在64位CPU的机器上,但没啥意义,64位的性能会被大打折扣。


  寻址能力不同  
  
32位操作系统最多可以寻址2的32次方即4,294,967,296字节,约4GB内存,4GB的内存就现在而言在很多服务端程序上都是不够用的,而64位操作系统理论上可以寻址2的64次方即18,446,744,073,709,551,616字节超过1亿GB内存,但这只是理论上,由于不同架构的CPU设计不同,所以寻址能力也有错差别。

32位操作系统和64位操作系统下数据类型对应的字节大小也是不同的,正常数据类型对应的字节数应该是CPU位数决定的,但实际上貌似是由编译器决定的,看下表:

32位操作系统

64位操作系统

char

1个字节

1个字节

short int

2个字节

2个字节

int

4个字节

4个字节

unsigned int

4个字节

4个字节

float

4个字节

4个字节

double

8个字节

8个字节

long(指针大小)

4个字节

8个字节

long long

8个字节

8个字节

unsigned long

4个字节

8个字节

20世纪和21世纪早期制造的计算机大多都是32位的机器,现如今大多都是64位的机器了,但为了兼容32位机器,一般编程都会开发出两个版本,例如打包一个Android SDK,SDK内部一般都会包含32位和64位的动态链接库,iOS的Framework内部也会有32位和64位的静态链接库。

总结

32位处理器的优点唯一值得一提就是它可以与20世纪末和21世纪初开发的所有旧程序兼容。64位处理器可以提升程序的性能,更好的利用64位操作系统的特性。64位的处理器有256TB的虚拟内存,其中128TB分配给了用户空间,另外128TB分配给了内核空间(不同架构的CPU虚拟内存的设计大小不同,AMD的x86-64架构的CPU只有最低48位才会在地址转换时被使用,所以总的虚拟地址空间为2的48次方即256TB,这里涉及到多级页表中的四级页表,后续程序喵会介绍)。

要实现真正意义上的64位计算,光有64位的处理器是不行的,还必须得有64位的操作系统以及64位的应用软件才行,三者缺一不可,缺少其中任何一种要素都是无法实现64位计算的。在64位处理器方面,Intel和AMD两大处理器厂商都发布了多个系列多种规格的64位处理器;

参考资料:

https://blog.51cto.com/zliang90/1282301

https://www.zhihu.com/question/19862280

https://blog.csdn.net/qing101hua/article/details/80763764

https://www.guru99.com/32-bit-vs-64-bit-operating-systems.html

https://www.educba.com/32-bit-vs-64-bit-operating-system/

https://www.werecoverdata.com/blog/whats-better-64-bit-vs-32-bit/

https://www.geeksforgeeks.org/difference-32-bit-64-bit-operating-systems/

------------ END ------------

推荐阅读:

精选汇总 | 专栏 | 目录 | 搜索

精选汇总 | ARM、Cortex-M

精选汇总 | ST工具、下载编程工具

关注微信公众号『嵌入式专栏』,底部菜单查看更多内容,回复“加群”按规则加入技术交流群。

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

32位、64位操作系统系统差异对比相关推荐

  1. 32位/64位系统,jdk32位,64位,32/64位jdk编译出来的class和eclipse 32位和64位

    首先关于32位/64位系统,jdk32位,64位,32/64位jdk编译出来的class和eclipse 32位和64位的一些对应关系做些说明. 1.32位操作系统不可以装64位jdk,64位操作系统 ...

  2. 微软官方原版win7(64位/32位)旗舰版系统下载

    http://blog.sina.com.cn/s/blog_541caaee01014q8t.html 好多友友一直在问,需要微软官方win7系统,特别是64位win7旗舰版由于联想官方(其他品牌相 ...

  3. 微软官方原版win7(64位/32位)旗舰版系统下载【适合所有品牌】 此博文包含图片 转载▼...

    好多友友一直在问,需要微软官方win7系统,特别是64位win7旗舰版由于联想官方(其他品牌相同)没有提供(只有家庭基础版),好多都需要.网上虽然也有,但是良莠不齐,需要自己去甄别,这对于新手很困难的 ...

  4. cmake跨平台编译之判断操作系统平台、32位64位系统

    判断交叉编译: if(CMAKE_CROSSCOMPILING)message(STATUS "Cross Comliling!!!, ARM")set(CURRENT_SYSTE ...

  5. 让使用SQLite的.NET应用自适应32位/64位系统

    Windows 7 64 bit(刚扩到4G内存,果断换64位的,那速度杠杠的) Microsoft Visual Studio 2010 Ultimate 32bit(在64位系统里运行正常) sq ...

  6. Linux下的32位C程序,linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件...

    1.linux 系统c语言生成.o文件,---->gcc -m64 -c -fPIC test.c -o test.o 2.linux 系统c语言生成.so文件,----->gcc -sh ...

  7. 服务器优盘启动安装win7系统教程,晨枫u盘启动工具安装原版Win7的两种方法(32位64位系统通用)...

    安装原版Win7两类方法 第一类方法(32位64位系统通用): 具体步骤: [1]先使用晨枫U盘启动制作工具制作完启动U盘(参照制作教程). [1]找到Windows7系统的iso镜像,用UltraI ...

  8. 系统之家win7 32位64位iso极速旗舰版 v12.1

    适合个人重装及装机技术员专用!!!为了方便用户使用,集合几款常用软件安装包,可自行选择是否安装!!! [主要更新] *本系统重要补丁更新至2017-12月. *搭载了最新2017.10.28发布的IT ...

  9. c# 未能加载文件或程序集mysql.data,SQLite的C#,.NET应用自适应32位/64位系统(未能加载文件或程序集“System.Data.SQLite.dll)...

    SQLite异常报错 其他信息: 未能加载文件或程序集"System.Data.SQLite, Version=1.0.103.0, Culture=neutral, PublicKeyTo ...

  10. 32位/64位软件和系统的区别

    32位/64位软件和系统的区别 win7 x86就是win7 32位系统 win7 x64就是win7 64位系统(一般需要电脑运行存储>4GB)

最新文章

  1. 第四周作业 wcPro
  2. activty在哪个栈里面_第二篇Activity:2、任务和返回堆栈(Tasks and Back Stack)之基本介绍...
  3. Ubuntu增加一个用户并给普通用户赋予root权限的方法
  4. flatmap和map的区别!
  5. #define中 #与##的神奇用法
  6. k8s核心技术-Service概述_Service的三种类型_ClusterIP只能内部访问_NodePort可以外网访问_LoadBalancer公有云---K8S_Google工作笔记0032
  7. opencv方框内图像保存_opencv 图像滤波(均值,方框,高斯,中值)
  8. expect免互交 常用编辑文本
  9. [spring]maven项目中获取resources资源目录路径
  10. 关于给电鼓音源增加鼓盘或者DIY鼓盘(DIY镲片)的方法
  11. ps编辑工具:渐隐/合并拷贝
  12. 你不知道的接近开关与PLC连接时如何判断用PNP还是NPN
  13. C语言画直线~Bresenham方法
  14. 论文参考文献格式说明
  15. xshell左边的菜单栏目,显示会话连接的不见了怎么办?
  16. WebRTC系列-Qos系列之发送NACK
  17. KaTex的一个简单例子
  18. 计算机软件产业分析,中国工业软件产业链上中下游布局分析及企业一览(附图表)...
  19. 程序员接私活的一些平台和建议,千万要注意,别掉坑里!
  20. cocos2dx 安卓环境播放mid音乐

热门文章

  1. 红外发光二极管的接收方式
  2. 英语月份、星期、日期的缩写
  3. 聊聊订单系统的设计?看这篇就够了!
  4. webRTC(二十四):web远程多台android的实现
  5. 北京信息科技大学计算机研究生在哪个校区,北京信息科技大学有几个校区,哪个校区最好及各校区介绍...
  6. day199-2019-01-05-英语流利阅读-待学习
  7. 如何快速实现一个基于Nginx网站的监控场景
  8. 物联网通信技术原理第5章 移动通信技术
  9. Windows Server网络操作系统安装
  10. iPhone12基带确认,果粉放心