随着近来AMD和Intel的64位CPU以及 Microsoft 64位操作系统的相继发布,我想来谈谈CPU位数与操作系统位数的问题,这二者有区别也有联系,操作系统位数的概念是基于CPU的位数的。
     首先我们从计算机的信息表示谈起。计算机中的信息分为两类:控制信息、数据信息。控制信息表示:条件、命令、状态等。数据信息有数值与非数值的两类,非数值如:文字、图像、声音等。所有这些信息在计算机中用数字代码表示,为了电路表示处理方便,就用二进制表示。电路用高电平、低电平表示2个数码“1”和 “0”,简单地可理解为高低电压或有无电。十进制在每个数位上可用10个数码(0—9),二进制在每个数位上可用2个数码(0、1)。用二进制表示数和十进制的其实就是一样,也可进行各种运算。计算机系统的信息从输入、存储、处理到输出就都是用基于二进制的电信号表示。如键盘的每一个按键可用一个数码表示;如鼠标可用2个数码分别表示水平和垂直的位置;如存储字符“A”可用数码“01100101”表示;如存储、输出图像可将图像分为很多点,各点用一数码表示其颜色。
     所谈的位数就是表示信息的二进制数码的位数。位数越大能表示的信息范围就越大。如“16位色”就是说能表示的颜色种数是2的16次幂(65536),32位就有2的32次幂(65536*65536)。
     CPU的位数是指CPU能一次同时寄存和处理二进制数码的位数,这和CPU中寄存器的位数对应。
     CPU为了实现其功能一般设计了指令集,即是CPU的全部指令,这就是机器语言。计算机的所有功能都是基于CPU的指令集。指令集和CPU的位数是有联系的。如Intel 8086 CPU 是16位,其指令集也是16位。如Intel 80386DX CPU 是32位,其指令集也是32位,但它也保持原16位指令集,这是为了向上兼容。
     操作系统的位数是说其所依赖的指令集的位数。
     计算机系统一般都应有向上兼容性,所以也可有64位CPU上运行32位操作系统、32位CPU上运行16位操作系统的情况。
操作系统位数应该是根据指针类型的位数来定的。整数类型不一定跟位数相等,CPU位数准确地说应该是CPU一次能够并行处理的数据宽度,一般就是指数据总线宽度。
附:
64位CPU如:AMD Athlon64 、Intel Pentium 4 F
32位CPU如:Intel 80386DX 到 Intel Pentium III 和部分Intel Pentium 4
16位CPU如:Intel 8086、Intel 80286
64位操作系统如:Windows XP Professional x64和Windows Server 2003 x64
32位操作系统如:Windows95、Windows98、Windows NT、Windows 2000、Windows XP
16位操作系统如:DOS 
Windows1.0到3.2是运行在DOS上的,不能算是独立的操作系统。
呵呵,是这样的。如果你去看intel网站上的关于ia32结构的白皮书,会搞得比一般人明白许多。16位和32位早期的主要区别是寄存器的位数,内存的寻址和相应指令集的扩充。32位intel   cpu都有real模式,即完全的16位模式,屏蔽掉32位的所有特性;32位模式,可以使用所有的32位特性;模拟的8086模式,可以用一个32位机模拟多个16位的8086机,他们的内存是分段隔离的。现在的操作系统使用的都是32位的模式,因为可以享受到cpu直接提供的内存的分页和分段管理。他们提供模拟机制,实际上也是依托cpu实现的16位环境,而不是直接解释16位代码。由于负责生成汇编代码的主要是编译器,所以设计16位的编译器在任何情况下只能生成16位代码。当然,这并不是说用16位的编译器不可能生成32位的代码,因为他完全可能被设计成在16位实模式下生成32位的代码,从而可以在32位的机器上被执行。这就是所谓的交叉编译。你可以使用诸如gcc这样的交叉编译器在16位dos环境下编译出可以在32位linux环境下被执行的程序。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ray_zhang_3/archive/2010/04/03/5447140.aspx
现在才来弄这个问题有点晚了,呵呵。
    这些信息是在网上找的,我就总结了对自己有用的。
    操作系统要管理硬件,在对CPU进行管理的时候不同字长的CPU需要不同的指令集来管理,OS要可以管理响应的CPU才好,所以64位的CPU需要64位的OS。
   1、处理器的处理位数和操作系统的关系:
    处理器的位数是路,操作系统是调度灯或者交警。
    如果你的处理器是64位的处理器,而你的操作系统只支持32位处理器的话,就像一个不懂得现代交通的调度系统或者交警指挥交通,效率不会得到提升。
    如果你处理器是32位的,操作系统支支持64位。那么就像把现代交通调度系统和交警搬到清朝时期,你想想,他们愿意吗?(实际上,操作系统也不会正常运行,甚至不能正常安装)
   2、如何查看系统的位数
一:关于windows系列机系统:
我发现许多软件下载和安装时多了位数选择,有什么32位64位或x86之类的。
  现在关于查看自己系统位数的方法,提供大家参考。
  以前的Windows XP/Server2003几乎都是32位的操作系统
  使用 Winmsd.exe 工具检查处理器:
  1. 在开始菜单下,单击“运行”。
  2. 在“运行”中,输入 winmsd.exe,然后回车。
  3. 系统摘要 在弹出的“项目(system summary)”下面的右窗格中找到“处理器(processor)”。注意其数值。
  如果“处理器”对应的值是以“x86”开头的,则该计算机正在运行的是 Windows 操作系统的 32 位版本。
  如果“处理器”对应的值是以“ia64”开头的,则该计算机正在运行的是 Windows 操作系统的 64 位版本。
二:关于linux系统:
     查看Linux操作系统位数(32位还是64)
  在安装一份64位ORACLE数据库之前,想先确认一下操作系统是否是64位。用uname -a命令查看了,但结果中并没有明确说明是多少位,于是可以再继续找其它方法。
  1.编程实现:
  在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数。若返回4则是32位操作系统,返回8即是64位。
  2.getconf命令:
  getconf命令可以获取系统的基本配置信息,比如操作系统位数,内存大小,磁盘大小等。
  例如:
  确定磁盘 hdisk0 大小,若是 root 用户,则输入:
  getconf DISK_SIZE /dev/hdisk0
  确定实际内存大小:getconf REAL_MEMORY
  确定是否机器硬件是 32 位或 64 位:getconf HARDWARE_BITMODE
  确定是否内核是 32 位或 64 位: getconf KERNEL_BITMODE
  若以上的getconf KERNEL_BITMODE方法不成功(在我的机器上就不成功),可能是因为版本不一致,可以再尝试用:getconf WORD_BIT,这个命令返回int类型的长度,与sizeof(int)一致。
有的人会问:为什么586主板上必须同时插两条内存?不能插1条或3条吗?实际上这是指586主板使用72线内存时的情形,如果使用168线的内存就可以插任意条内存了,只要有插槽即可。如何理解CPU与内存条的关系呢?  
CPU不仅可以分成X86,还可以从位数上划分,如Intel 8088/8086 CPU就是8位的,而80286 CPU就是16位的, CPU与I/O口的操作要受I/O口的限制,每次只能传8位。但与内存交换数据则是公平的同频宽的传输。而CPU的发展比内存快,即位数多,因此内存条就要组合起来才能和CPU传输一次数据。缺少内存条就可能造成电脑系统无法工作。上面所说的586 CPU是64位的,因此就要使用两条32位的72线内存条。而168线的内存条是64位的,所以可以独立的工作。显然,72线并不表示72位都用来传输数据。同理,168线内存也不是168根数据线。下面的列表可以告诉您组装电脑时如何匹配CPU和内存条。  
CPU种类 CPU内部宽度 30线内存条/BANK 72线内存条/BANK 168线内存条/BANK  
Intel8088/8086 8位 1条(每条8位)  
Intel 80286 16位 2条(每条8位)  
Intel80386SX 16位 2条(每条8位)  
Intel 80386DX 32位 4条(每条8位)  
Intel 80486SX 32位 4条(每条8位)  
Intel 80486DX 32位 4条(每条8位) 1条(每条32位)  
Pentium 64位 2条(每条32位) 1条(每条64位)  
Pentium Pro 64位 2条(每条32位) 1条(每条64位)  
Pentium II 64位 2条(每条32位) 1条(每条64位)  
如果您没有这个表,又记不住应该插几条内存,该怎么办呢?很简单,仔细查看主板上的内存槽,上面有BANK编号,如BANK0,BANK1等。您知道为什么主板说明书上都说要插满一个BANK,才能插另一个BANK吗?实际上,一个BANK的几条内存宽度之和就是CPU内部的宽度。 --------------------- 本文来自 xueminxu 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xufox/article/details/8036568?utm_source=copy

CPU位数、操作系统位数和编译器位数关系相关推荐

  1. 机器字长,存储字长,存储芯片的数据线,CPU的数据总线,MDR位数,MAR位数,存储芯片和存储器的关系。

    CPU总线的宽度=运算器的位数=通用寄存器的宽度=数据总线宽度 (字长:不加修饰的一般为机器字长) ------------------------------------------- 首先明确一点 ...

  2. 处理器,操作系统,程序的位数,指针的长度

    人们熟知的操作系统有X86(32位)和X64(64位)之分,而且X86的系统能识别的内存是没法超过4G的. 1.处理器位数 其实处理器也有X86,X64之分. X86处理器是8086,80286,80 ...

  3. 十位数和个位数交换python_整型变量 x中存放了一个两位数,要将这个两位数的个位数字和十位数字交换位置,例如,13变成31,正确的Python表达式是________。_学小易找答案...

    [多选题]计量经济学检验主要是检验模型是否符合计量经济方法的基本假定.检验内容包括( ) [填空题](_)是运用理论计量经济学提供的工具,研究经济学中某些特定领域的经济数量问题. [多选题]下列属于时 ...

  4. 清华学霸直博全自主写CPU、操作系统、编译器!刘知远点赞!(附链接)

    来源:知乎.blog.miskcoo等 本文约3300字,建议阅读8分钟. 本文介绍了清华直播学霸实现了全自主写CPU.操作系统.编译器的简历. [ 导读 ]清华大学直博面试的一则简历上了知乎热榜:& ...

  5. 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...

    什么叫四则运算?加.减.乘.除呗.在四则运算中,如果没有括号,运算规则是先算乘.除,后算加.减. 乘法也是算术中最常见的一种运算.它是将相同的数加起来的一种快捷方式.比如说16×8=128.表示:8个 ...

  6. 依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以后的5个数,且该数是奇数,则把这个四位数按从小到大的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt。

    已知数据文件IN28.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请编制一个函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位 ...

  7. 输出三位数的个十百位数

    从键盘输入一个三位数,编写程序依次输出这个三位数的个位数.十位数.百位数. 例如: 输入:456 输出:6 5 4 #include<stdio.h> int main() {int a; ...

  8. 给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321

    给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321 int main() {int n;int a,b,c,d,e;//个,十,百 ...

  9. 两位数合并成一个四位数

    将两个两位数合并成一个四位数的方法是将这两个数分别乘上各自的十位数和个位数的权值(如第一个数乘以100,第二个数乘以10),然后相加.例如:12和34合并成1234.

  10. 清华学霸讲计算机,清华学霸直博简历火了:CPU、操作系统、编译器全自己写

    原标题:清华学霸直博简历火了:CPU.操作系统.编译器全自己写 程序猿(ID:imkuqin) 整编 综合自:zibuyu9微博.https://www.zhihu.com/question/3457 ...

最新文章

  1. CVS/SVN 托管服务
  2. C/C++笔记(04):GB2312字符串和UTF-8之间的转换
  3. C#之windows桌面软件第九课:汉字串口助手
  4. 【MASHIII调制器】MASHIII调制器的Simulink建模与仿真
  5. php 关闭电脑,php实现用手机关闭计算机(电脑)的方法
  6. 计算机采用二进制无关,计算机为什么采用二进制?
  7. AAAI 2019 使用循环条件注意力结构探索回答立场检测任务
  8. Ubuntu 14.04 java环境安装配置(不是openJAVA)
  9. python matplotlib.pyplot报错tk_@邹博,python 中 import matplotlib.pyplot 会报Keyerror 'qt5' 的错...
  10. (2020全新)UGNX二次开发(零基础入门)到提高全套视频教程_NXopen-UG二次开发_新浪博客
  11. 论文阅读:Deep learning—Yann LeCun, Yoshua Bengio Geoffrey Hinton
  12. 人脸识别概述及基于多显卡服务器实现百万底库人脸比对的简单实现方案
  13. cz73 读取速度慢_CPU 访问硬盘速度很慢的原因找到了
  14. Linux(6)磁盘管理和文件系统
  15. php7模拟,认识PHP7虚拟机()三
  16. 【C++】1066:满足条件的数累加(信息学奥赛)
  17. 六十星系之33紫微贪狼坐卯酉
  18. Linux配置清华大学yum源,更换清华大学yum源
  19. 基于ThinkPhp6+Vue+ElementUI低代码开发平台
  20. 996.ICU的问题还没解决,浙江拟用征信约束频繁跳槽

热门文章

  1. 关于使用2d照片进行3d建模
  2. 兼容exe的linux系统,国产操作系统下想运行EXE?你何不虚拟个电脑系统出来
  3. 折半插入排序的最强版
  4. [转]最速下降曲线:重力场中两点之间曲线更快
  5. 盘点百位富豪读过的大学:土鳖比海龟更有优势
  6. java点击按钮隐藏图片6_原生JS实现隐藏显示图片 JS实现点击切换图片效果
  7. MVP、EMC、CRM、IoT、边缘计算盒子、系统群控、数字化赋能、EMS、冷媒
  8. VC中字符串形式ip地址和整数形式ip地址转换
  9. 安全基线规范之Cisco核心交换机
  10. 大数据毕设题目推荐 - 最新大数据毕设选题 - 毕业设计项目方向课题