假设p是一个指针址或者是一个变量,通过以下代码实现p是4的整数倍,如果是地址,则实现4字节对齐
代码1:
while (p & 0x03)
{
p++;
}
如果p是4整数倍,条件为0,退出,如果p多1,p最后2位会从01,10,11直到00。
代码2:
(p+0x03)&(~0x03)
如果p是4整数倍,不变,如果不是,加上3,肯定进位,然后最后2位可能有多余,是要减去的,用&(~0x03)做到。
假设p是一个指针址或者是一个变量,通过以下代码实现p是4的整数倍,如果是地址,则实现4字节对齐
代码1:
while (p & 0x03)
{
p++;
}
如果p是4整数倍,条件为0,退出,如果p多1,p最后2位会从01,10,11直到00。
代码2:
(p+0x03)&(~0x03)
如果p是4整数倍,不变,如果不是,加上3,肯定进位,然后最后2位可能有多余,是要减去的,用&(~0x03)做到。