• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-04-25)  系统原理 |   6 条评论  22 
    文章评分 0 次,平均分 0.0

    涉及到内存边界或者其他和操作系统位数相关情况下,很多时候需要将某个数上调,这里以上调到8的倍数为例。
    比如:
    1-->8
    5-->8
    14->16
    31->32
    是8的倍数的特点,8的倍数的二进制后4位必须是1000
    又知道,向上调整最长的步长为7,比如1--->8 9---->16
    所以可以先对某个数a进行加7,使其大于等于8的倍数。
    然后再将后3bit位清0即可。

    enum {_ALIGN = 8}
    static size_t ROUND_UP(size_t size)
    {
             return ((size + _ALIGN - 1) & ~(_ALIGN - 1));
    }
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/819.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享