有时候我们需要对一个数字节对齐。
实例代码:
#include <stdio.h>
#define CEILING_2_POWER(x,a) ( ((x) + ((a) - 1) ) & ( ~((a) - 1) ) )//字节对齐
#define A(x,a) ((x) + ((a) - 1) )//先加
#define B(x,a) ( ~((a) - 1) )//再用低位取零
int main( )
{
unsigned int i = 15, j = 16;
printf("0x%x\n", CEILING_2_POWER(i,j));
printf("0x%x\n", A(i,j));
printf("0x%x\n", B(i,j));
return 0;
}
运行结果:
0x10
0x1e
0xfffffff0