32位系统和64位系统的说明

关于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>
int main()
{
	int a = 10;
	printf("%p \n", &a);
	return 0;

}

在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 
则此时为1616进制数据,则为64位。

此文部分内容引用:
百度百科
https://baike.baidu.com/item/32位处理器/9830812

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值