round_up() 计算8字节对齐后的大小,或向上取最近的2的幂次

Posted jackie-astro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了round_up() 计算8字节对齐后的大小,或向上取最近的2的幂次相关的知识,希望对你有一定的参考价值。

round_up.cpp内容如下:

#include <iostream>
using namespace std;

const int kAlign = 8; // kAlign show be powers of 2, say 2, 4 ,8, 16, 32, ...
const int kAlign16 = 16;

int round_up(unsigned int nBytes) { return ((nBytes)+(kAlign - 1)) & ~(kAlign - 1); }
int round_up16(unsigned int nBytes) { return ((nBytes)+(kAlign16 - 1)) & ~(kAlign16 - 1); }

int main(int argc, char **argv)
{
    for (int i = 0; i < 20; ++i)
        cout << i << " round up to " << round_up(i) << endl;
    for (int i = 0; i < 20; ++i)
        cout << i << " round up to (with alignment 16): " << round_up16(i) << endl;
	
    return 0;
}

运行结果如下图所示:
技术图片


以上是关于round_up() 计算8字节对齐后的大小,或向上取最近的2的幂次的主要内容,如果未能解决你的问题,请参考以下文章

C结构体对齐

关于结构体大小一篇很详细的文章

计算机组成原理——大小端模式与边界对齐

计算机组成原理——大小端模式与边界对齐

了解C++类的大小和类变量的字节对齐

记一次对java对象在内存中的分析