`
ccx20060810501
  • 浏览: 32495 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

如何将一个数上调至8的倍数

    博客分类:
  • STL
UP 
阅读更多

在STL中它的实现是这样的:

 

enum {_ALIGN = 8}
//ROUND_UP() 将bytes上调至8的倍数
static size_t ROUND_UP(size_t size)
{
         return ((size + _ALIGN - 1) & ~(_ALIGN - 1));
}

 

 理由:

return   (((bytes)   +   8   -   1)   &~(8   -   1)); 
8的倍数,   主要是二进制的后三位要全0 
首先 

((bytes)   +   8   -   1) 
先把bytes+7,   7的二进制是   111 
也就是后四位 
+7的目的就是为了向上取整   :)   比如25就变成了32 

后面~(8-1)   二进制就是   0000 
和前面的一与就是让最后面的四位全为0 

分享到:
评论
1 楼 joolu 2010-04-14  
8的倍数,是后三位全0。 7的二进制是111。 楼主失误打错了。

相关推荐

Global site tag (gtag.js) - Google Analytics