int类型数据在内存中占用的字节数不能代表寄存器的大小

图片来自早些年某网站C语言视频课程。

一、寄存器的定义和用途

寄存器(Register)是中央处理器(简称“CPU”)的组成部分,用于暂时存放参与运算的数据

和运算结果。寄存器分为通用寄存器和特殊功能寄存器。通用寄存器参与算术/逻辑运算并且

保存运算结果。

二、通用寄存器的数据宽度(或称为“通用寄存器的大小”)

通用寄存器的数据宽度,主要取决于处理器(CPU)架构。

32位处理器中通用寄存器的数据宽度是32bit(4个字节)。

64位处理器中通用寄存器的数据宽度是64bit(8个字节)。

通用寄存器的数据宽度取决于计算机的机器字长

计算机的机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数。

根据机器字长,计算机大致可以分为两大类:32位机和64位机。

32位机是指一次能够运行32bit数据的计算机。

64位机是指一次能够运行64bit数据的计算机。

三、64位机的数据模型

目前,大多数计算机都是64位机。64位机有三种数据模型:LP64、ILP64、LLP64。

LP64:“L”代表long类型数据,“P”代表pointer类型数据,“LP64”代表long和pointer两种

类型数据占用64bit(8个字节),int类型数据默认是4个字节。

ILP64:“I”代表int类型数据,“L”代表long类型数据,“P”代表pointer类型数据,“ILP64”

代表int、long以及pointer三种类型数据都占用64bit(8个字节)。

LLP64:“LL”代表long long类型数据,“P”代表pointer类型数据,“LLP64”代表long long和

pointer两种类型数据都占用64bit(8个字节),int和long两种类型数据默认都是4个字节。

注释:1个字节由8个bit组成。字节是计算机存储的基本单位,bit是计算机存储的最小单位

四、操作系统

常见的操作系统有三种:Windows、macOS、Linux

五、通用寄存器的数据宽度(或称“通用寄存器的大小”)与int类型数据之间的关系

在64位Windows操作系统中int类型数据占用4个字节。

在64位macOS操作系统中int类型数据占用4个字节。

在64位Linux操作系统中int类型数据占用8个字节。

int类型数据在内存中占用的字节数,受平台(32位机、64位机)以及操作系统(Windows、

macOS、Linux)的影响

从根源上讲,64位Winows操作系统采用的数据模型是LLP64,意味着long long和pointer两种

类型的数据在内存中占用64bit(8个字节),而int和long两种类型的数据在内存中占用4个字节。

64位macOS操作系统采用的数据模型是LP64,意味着long和pointer两种类型的数据在内存中

占用64bit(8个字节),而int类型的数据在内存中占用4个字节。

64位Linux操作系统采用的数据模型是ILP64,意味着int、long和pointer三种类型的数据在内存中

占用64bit(8个字节)。

六、小结

64位Winows操作系统、64位macOS操作系统和64位Linux操作系统,这三者对应的通用寄存器 

的数据宽度都是64bit(相当于8个字节)。但是,int类型数据在不同的操作系统中占用的字节数

可能是8个字节,也可能是4个字节。

因此,int类型数据在内存中占用的字节数不能代表寄存器的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值