摘自: https://blog.csdn.net/reille/article/details/6329195
页面对齐相关的宏(详解):https://blog.csdn.net/I_feige/article/details/60962935

计算a以size为倍数的上下界数:

    #define alignment_down(a, size) (a & (~(size-1)) )#define alignment_up(a, size)   ((a+size-1) & (~ (size-1)))

(~(size-1))的意思是 如果size等于8的话,就把低3位去掉。

注: 上界数的计算方法,如果要求出比a大的是不是需要加上8就可以了?可是如果a本身就是8的倍数,这样加8之后上界数就是16。所以在a基础上加上(size - 1), 然后与size的对齐掩码进行与运算.。

例如:
a=0, size=8, 则alignment_down(a,size)=0, alignment_up(a,size)=0.
a=6, size=8, 则alignment_down(a,size)=0, alignment_up(a,size)=8.
a=8, size=8, 则alignment_down(a,size)=8, alignment_up(a,size)=8.
a=14, size=8,则alignment_down(a,size)=8, alignment_up(a,size)=16.
注:size应当为2的n次方, 即2, 4, 8, 16, 32, 64, 128, 256, 1024, 2048, 4096 …

宏定义ALIAN实现字节对齐相关推荐

  1. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  2. 关于C++中四字节对齐的坑

    最近做一个工程,大体的意思是在程序中定义一个结构,运行中会将结构直接写到文件中,然后另一个程序会用同样的结构读出来.为了验证是写文件的程序的问题还是读文件的程序的问题,用winhex来打开文件,仿照结 ...

  3. 计算机中的字节对齐问题

    [转载]http://www.cnblogs.com/clover-toeic/p/3853132.html 引言 考虑下面的结构体定义: 1 typedef struct{ 2 char c1; 3 ...

  4. 程序人生 | C语言字节对齐问题详解 - 对齐/字节序/位序/网络序等(上)

    本文首发于 2014-07-21 15:32:28 1. 引言 考虑下面的结构体定义: typedef struct{char c1;short s; char c2; int i; }T_FOO; ...

  5. C语言字节对齐问题详解

    转载原文连接:https://www.cnblogs.com/clover-toeic/p/3853132.html C语言字节对齐问题详解 引言 考虑下面的结构体定义: 1 typedef stru ...

  6. C语言字节对齐问题详解(zz)

    http://www.bubuko.com/infodetail-263205.html 引言 考虑下面的结构体定义: typedef struct{char c1;short s; char c2; ...

  7. c语言特殊字符字符串宽度对齐,[转]C语言字节对齐问题详解

    引言 考虑下面的结构体定义: 1 typedef struct{2 charc1;3 shorts;4 charc2;5 inti;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1 ...

  8. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  9. c语言中定义的数组按照指定字节对齐

    最近在调试一个简单的网卡裸板收发包demo,组包和拆包时,需要使用dma,而我所使用的处理器的dma是128bit对齐的,因此,在使用dma时,需要保证16字节对齐.采用的对齐方式如下: #pragm ...

最新文章

  1. 神经网络常用激活函数
  2. 如何用正确的方法来写出质量好的软件的75条体会
  3. linux命令详解:file命令
  4. excel表格数字显示不全_从word中把身份证号码复制到excel表格中完整显示身份证号码后4位...
  5. 分析染色温度对染色热力学性能和染色动力学性能的影响?实际生产时,染色温度选择应考虑哪些因素?举例说明?并阐明实现低温染色的原理。
  6. Oracle自动性能统计
  7. 数字图像处理--颜色选择
  8. 天外印刷的计件工资项目结束了
  9. Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci
  10. python抽荣耀水晶_大神代抽荣耀水晶,只需要49元,网友亲自体验,结果5分钟完成...
  11. Pandas系列(三)新增数据列
  12. OOP之C#设计及其UML(反向工程)
  13. 清理谷歌浏览器注册表_chrome注册表怎么清理_如何清理没用的chrome注册表-win7之家...
  14. Excel数据透视表教程小结
  15. 补助系统C语言,领钱了!全国各省信息系统项目管理师证书技能提升补贴说明...
  16. 英特尔oneAPI—开拓
  17. 《数学之美》吴军-读书笔记
  18. python从键盘输入10个整数算出奇数偶数的和_画出流程图,并编程实现: 从键盘上输入10个整数型的数值,分别统计奇数和偶数的个数。_概率论与数理统计答案_学小易找答案...
  19. 减小PDF文档大小(转载)
  20. leetcode 笨阶乘

热门文章

  1. C#中ComboBox的SelectedIndexChanged事件获取Tag值
  2. [Unity算法]平抛运动
  3. 《OpenCL异构计算》学习笔记
  4. GitLab CI / CD管道配置参考 .gitlab-ci.yml文件定义字段
  5. 无源蜂鸣器按特定频率发出相对应的音调
  6. 靠这个Python脚本轻松月入上万?你信不?打造淘宝主图视频
  7. 飞桨AI创造营2期-t3-数据处理
  8. Promise不会??看这里!!!史上最通俗易懂的Promise!!!
  9. idea vue 热_vue如何实现热更新
  10. 为什么有时候spring mvc的interceptor会执行两次