在按字节编址,采用小端方式的32位计算机中,按边界对齐方式为以下C语言结构型变量a分配存储空间。
struct record{ short x1; int x2; }a;
若a的首地址为2020FE00H,a的成员变量x2的机器数为12340000H,则其中34H所在存储单元的地址是:
A、2020FE03H; B、2020FE04H;
C、2020FE05H; D、2020FE06H;
x1为short类型,占4个字节,那么x2的首地址就是2020FE00H + 4 = 2020FE04H
按小端存储,那么x2在存储单元中的位序从低地址到高地址为00H 00H 34H 12H,00H的地址就是x2的首地址2020FE04H,那么34H的地址就是2020FE06H。
参考答案:D
考点一:编址单...
用户登录可进行刷题及查看答案
考点一:编址单位
若按字节编址,则一个数据类型占的地址单元数等于其字节数。
考点二:边界对齐
以字节为单位的边界对齐,也称字节对齐,数据在存储时需要被放置在内存地址的倍数上,比如数据类型的大小为4个字节,那么它需要被存放在地址是4的倍数的位置上。数据按边界对齐存储是一种优化技术,通过调整数据在内存中的存储位置,可以提高计算机系统的性能和效率。
边界对齐后,结构体大小为其大小最大成员变量大小的整数倍。
根据边界对齐的定义,变量a的首地址为2020FE00H,从首地址开始,按顺序从低地址到高地址依次放入x1和x2这个成员变量,模拟过程如下:
考点三:大端方式和小端方式
大端方式(Big Endian):数据低位保存在高地址中,数据高位保存在低地址中。大端序和人的书写顺序一致。
小端方式(Little Endian):数据低位保存在低地址中,数据高位保存在高地址中。
在32位计算机中,按字节编址,根据小端方式和按边界对齐的定义,给出变量a的内存布局如下:
所以34H所在存储单元的地址为2020FE06H。
登录后提交答案