C快速计算下一个4的倍数?

标签 c bit-manipulation

将无符号 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/

相关文章:

c++位操作如何打印出16、32位

c - 为什么只有 2 个线程处于事件状态时 pthread_create() 会失败?

c - 为什么节点的地址没有分配给结构体的自引用指针?

java - 在没有模运算符的情况下在 Java 中测试偶数

c - 打印数字的二进制表示

Bash shell,尝试创建和评估掩码

c++ - Windows 如何进行定时 GUI 动画?

c++ - 用户空间和内核空间进程中的一组信号处理程序

c - 使用指针表示法访问 C 中的多维数组

c - 有符号整数的算术位移