将无符号 int
舍入为 4
的倍数的快速方法是什么?
4 的倍数有两个最低有效位 0,对吗?所以我可以将它们屏蔽掉,然后执行 switch 语句,将 1,2 或 3 添加到给定的 uint
。
这不是一个非常优雅的解决方案..
还有算术总结:
myint == 0 ? 0 : ((myint+3)/4)*4
可能有更好的方法包括一些位操作?
最佳答案
(myint + 3) & ~0x03
加法 3 是为了使下一个 4 的倍数成为前一个 4 的倍数,这是通过模运算产生的,由于除数是 2 的幂,因此可以通过掩码实现。
关于C快速计算下一个4的倍数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022179/