博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C 数据对齐算法
阅读量:4040 次
发布时间:2019-05-24

本文共 486 字,大约阅读时间需要 1 分钟。

我们在处理数据时,常常会要求数据字节对齐,例如8字节,16字节对齐等等,大家通常想到的做法是:

unsigned int calc_align(unsigned int n,unsigned align)  {      if ( n / align * align == n)                    return n;      return  (n / align + 1) * align;  }

不过这种算法的效率很低,下面介绍一种高效率的数据对齐算法:

unsigned int calc_align(unsigned int n,unsigned align)  {          return ((n + align - 1) & (~(align - 1)));  }

这种算法的原理是:

(align-1)         :对齐所需的对齐位,如:2字节对齐为1,4字节为11,8字节为111,16字节为1111...

(&~(align-1)) :将对齐位数据置位为0,其位为1      

(n+(align-1)) & ~(align-1) :对齐后的数据

转载地址:http://tkadi.baihongyu.com/

你可能感兴趣的文章
使用Navicat计划任务备份mysql数据库
查看>>
Java高并发,如何解决,什么方式解决
查看>>
深入理解分布式事务,高并发下分布式事务的解决方案
查看>>
分布式事务一些总结与思考
查看>>
Spring Cloud微服务架构实践与经验总结
查看>>
Spring Boot入门篇
查看>>
spring cloud服务的注册与发现(Eureka)
查看>>
Java IO流
查看>>
多线程
查看>>
互联网产品设计:产品即服务
查看>>
UrlreWirte的使用
查看>>
使用js定位到页面某个位子
查看>>
java获取客户端真实ip
查看>>
SWFUPLOAD的使用(java版)
查看>>
Memcached的使用(基于java)
查看>>
java ee中的乱码问题及解决方案
查看>>
从技术到管理:思维转变是关键
查看>>
spring2.5.6下配置定时器
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>