字节对齐
来源:互联网 发布:西安 国际程序员节 编辑:程序博客网 时间:2024/06/05 03:56
在内存管理中经常使用字节对齐来分配内存,有关字节对齐的算法如下:
1 原理:
2字节对齐,要求地址位为2,4,6,8...,要求二进制位最后一位为0(2的1次方)
4字节对齐,要求地址位为4,8,12,16...,要求二进制位最后两位为0(2的2次方)
8字节对齐,要求地址位为8,16,24,32...,要求二进制位最后三位为0(2的3次方)
16字节对齐,要求地址位为16,32,48,64...,要求二进制位最后四位为0(2的4次方)
...
由此可见,我们只要对数据补齐对齐所需最少数据,然后将补齐位置0就可以实现对齐计算。
2 字节对齐实现:
#define ROUND_UP(x, align) (x+(align-1))&~(align-1)
align为2,2字节对齐
align为4,4字节对齐
align为8,8字节对齐
...
3 字节对齐算法:
(1)(align-1),表示对齐所需的对齐位,如:2字节对齐为1,4字节为11,8字节为111,16字节为1111...
(2)(x+(align-1)),表示x补齐对齐所需数据
(3)&~(align-1),表示去除由于补齐造成的多余数据
(4) (x+(align-1))&~(align-1),表示对齐后的数据
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- 字节对齐
- php 下的测试工具Xdebug的安装及使用
- android ViewTreeObserver详细讲解
- openstack nova基础知识——RabbitMQ
- 桥接模式
- 码流、编码等的一些想法记录
- 字节对齐
- 十七道海量数据处理面试题与Bit-map详解
- 不同服务器数据库之间的数据操作
- UVA 10596 Morning Walk
- Matlab plot 参数设置
- 三级联动时ajax的同步请求和异步请求处理
- vs打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案
- 在Android上的使用 贝赛尔曲线
- NSNotification 译注