字节对齐
2022/8/30 23:52:49
本文主要是介绍字节对齐,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.字长定义
计算机字长指的是CPU一次(一个时钟周期)能处理的最大长度,一般来说有如下属性
计算机字长 = 寄存器大小 = 数据总线宽度 = 地址长度 = 机器位数
1.为什么要字节对齐
一般来讲,计算机都是从内存一次读出整个字,然后进行处理,假设字长32位,即4B,数据长度也为4B,如果数据对齐,那么数据在内存中存储状态如下
CPU一次就能将所有数据读出,而如果没有进行字节对齐,计算机需要两个时钟周期才能读出所有数据
还存在的类似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 *));
这篇关于字节对齐的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门