32位系统和64位系统

本文深入解析了32位和64位操作系统的原理、区别及判断方法,包括数据处理能力、内存寻址能力和所需配置的不同,以及通过命令、指针大小、编码方式和宏定义判断系统位数。
前言

众所周知,我们通常说操作系统是32位还是64位说的其实是32位处理器(CPU)还是64位处理器(CPU),Windows系统有32位和64位之分,下面我们来总结一下32位系统和64位系统的原理、区别以及如何判断。

32位系统和64位系统的原理

我们现在所称的计算机系统是32位或64位主要依据的是CPU解析的字组大小(字组大小:CPU每次能处理的数据量)

  • 32位处理器

32位处理器是指CPU内部的通用寄存器的宽度为32比特,支持整数的32比特宽度的算术与逻辑运算。

32位系统CPU一次可处理32位数据,即一次处理4个字节。

  • 64位处理器

64位处理器是指CPU内部的通用寄存器的宽度为64比特,支持整数的64比特宽度的算术与逻辑运算。

64位系统CPU一次可处理64位数据,即一次处理8个字节。

32位系统和64位系统的区别

  • 数据的处理能力

64位系统通用寄存器的宽度相较于32位系统增加了一倍,可处理的数据位数也增加了一倍,数据处理的能力大大增强。

  • 内存的寻址能力

32位CPU的地址总线不会超过32根,那么它所能达到的寻址范围也就不会超过2的32次方字节(存储单元以字节为单位),也就是 4GB。

如果是64位CPU的话,它所能达到的寻址范围理论上就会是2的64次方字节(上亿GB)。

  • 要求的配置不同

32位操作系统可以安装在32位CPU或64位CPU的电脑上,当然,32位操作系统安装在64位电脑上,其硬件恰似“大马拉小车”:64位CPU的效能就会大打折扣。

64位操作系统只能安装在64位CPU的电脑上。

32位系统和64位系统的判断

  • 方法一:用命令查看

[root@localhost ~]# getconf LONG_BIT

[root@localhost ~]# uname -a(显示系统信息)输出:x86_64表示64位系统,i686 i386表示32位系统

[root@DB-Server ~]# arch或者uname -m 输出:x86_64表示64位系统,i686表示32位系统

  • 方法二:判断指针大小

指针是用来存放地址的变量。

32位的CPU上,地址是32个0或1组成的二进制序列,地址就得用4byte的空间来存储,所以一个指针变量的大小就是4byte。同理,64位的CPU上指针变量的大小就是8byte。

int main(){
    void *ptr = 0;
    printf("%d\n", sizeof(ptr));
    return 0;
}
  • 方法三:判断编码方式

gcc以__i386__来进行32位编码,以__x86_64__来进行64位编码

int main(){
    #ifdef __x86_64__
        printf("__x86_64__\n");
    #elif __i386__    
        printf("__i386__\n");
    #endif
    return 0;
}
  • 方法四:使用宏定义_WORDSIZE

输出size:64表示64位系统,输出size:32表示32位系统

int main(){
	printf("size:%d \n", __WORDSIZE);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值