计算机组成原理——C语言中的边界对齐问题

边界对齐

一句话:K字节大小的数据必须要存储在K的整数倍的地址上
例如一个存储字长为32位的机器,现来详述一下依次存入一个int,short,double,char,short类型的数据的过程。假定int ,short,double ,char分别为4,2,8,1字节。那么它们分别占据字、半字、双字、字节。
字地址:4的倍数
半字地址:2的倍数
双字地址:8的倍数
字节地址:任意
那么第一个int就正好占据一个字,第一行就全是int.
short是半字,地址要是2的倍数,随意要占据第二行的前两格。
double是双字,地址要是8的倍数,第三行第一个正好是8,所以占据3,4两行。
char是字节,任意,所以占据double后面的一个格子就行了,这里正好是第五行的第一格。
short是半字,地址要是2的倍数,而char后面的那个地址是17,所以short的首地址不可以正好在char后面,要空一格,从18开始的两个格子。
边界对齐后插入数的位置如图所示:
在这里插入图片描述
边界对齐是以空间换时间的。
如果做题的话只要记住4B的数据(int,float)只能放在4的整数倍的地址,例如00H,04H,08H;8B(double)的数据只能放在8的整数倍的地址,例如00H,08H,10H;同理2B只能放2的整数倍;最后1B的数据可以放在任意位置<边界对齐做题目都是按字节编制的>

  • 61
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值