ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

字节对齐

2022-08-30 23:31:58  阅读:148  来源: 互联网

标签:字节 读出 计算机 字长 对齐 size


1.字长定义

计算机字长指的是CPU一次(一个时钟周期)能处理的最大长度,一般来说有如下属性

计算机字长 = 寄存器大小 = 数据总线宽度 = 地址长度 = 机器位数

1.为什么要字节对齐

一般来讲,计算机都是从内存一次读出整个字,然后进行处理,假设字长32位,即4B,数据长度也为4B,如果数据对齐,那么数据在内存中存储状态如下

image-20220827214958042

CPU一次就能将所有数据读出,而如果没有进行字节对齐,计算机需要两个时钟周期才能读出所有数据

image-20220827215016735

还存在的类似TLB 页未命中错误,读写一致性等问题.

2.怎么解决

假设计算机字长为n,那么一个字节对齐的地址至少有\(log_2^n\)个最低位为0

看如下样例

struct edge{
  size_t val;
  edge* next;
  int flag;
}

虽然flag只用来表示0和1两种状态,但使用int而不是bool可以保证字节对齐,

附录,如何查看计算机位数

打印size_t和任意指针的大小都可以获得计算机位数

printf("%d", sizeof(size_t));
printf("%d", sizeof(void *));

标签:字节,读出,计算机,字长,对齐,size
来源: https://www.cnblogs.com/INnoVationv2/p/16641332.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有