admin管理员组文章数量:1516870
关于32位系统和64位系统说明
我们常说的32位系统和64位系统,是怎么来的呢?
其实这跟cpu硬件是有关的:
32位的处理器,指的是cpu一次能处理的最大位数是32位,也就是如下:
1111 1111 1111 1111 1111 1111 1111 1111
32位处理器,计算机中的位数指的是CPU一次能处理的最大位数。32位计算机的CPU一次最多能处理32位数据,例如它的EAX寄存器就是32位的,当然32位计算机通常也可以处理16位和8位数据。
同时:在计算机中,“位(bit)”和"字节(Byte)"、KB、MB以及TB的关系是:
8位等于一字节,即8bit=1Byte,1KB=1024Byte(字节)=8*1024bit,1MB=1024KB,1GB=1024MB,1TB=1024GB 。32位处理器每次处理 4Byte(32bit),同理,64位处理器每次处理 8Byte(64bit) 。
在32位的系统中,cpu内部和外部数据总线最后发展为32位,则最终最大寻址为4GB。
在64位系统中,也是同样的原理。而64位处理器一次就能处理64位,即8个字节的数据。如果我们将总长128位的指令分别按照16位、32位、64位为单位进行编辑的话:旧的16位处理器,比如Intel 80286 CPU需要8个指令,32位的处理器需要4个指令,而64位处理器则只要两个指令,显然,在工作频率相同的情况下,64位处理器的处理速度会比16位、32位的更快。
且除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,而64位处理器的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。传统32位处理器的寻址空间最大为4GB,使得很多需要大容量内存的数据处理程序在这时都会显得捉襟见肘,形成了运行效率的瓶颈。而64位的处理器在理论上则可以达到16777216个TB,1TB等于1024GB,1GB等于1024MB,所以64位的处理器能够彻底解决32位计算系统所遇到的瓶颈现象,速度快人一等。
和C语言的关系
当我们编程按照32位系统编程debug时,则寻址是32位,也是就8个16进程的数字来构成地址:
#include<stdio.h>intmain(){int a =10;printf("%p \n",&a);return0;}在32位系统的输出结果 :
1>------ 已启动生成: 项目: Project2, 配置: Debug Win32 ------
1> test1.c
1>d:\code\c\project2\project2\test1.c(7): warning C4172: 返回局部变量或临时变量的地址
1> Project2.vcxproj -> D:\Code\C\Project2\Debug\Project2.exe
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
cmd.exe输出结果为:
00EFFBFC
请按任意键继续. . .
在64位系统的输出结果为:
[root@pcserver ~]# gcc 1.c
[root@pcserver ~]# ./a.out
0x7fff8d73c61c
则此时为16个16进制数据,则为64位。
此文部分内容引用:
百度百科
版权声明:本文标题:32位操作系统的处理艺术:一次处理32位数据的指南 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1772601968a3275609.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论