你能告诉我如何生成一个比可被 8 整除的输入数字更大的最小数字吗?(最好在 C 中)
有没有二的幂的一般解决方案?
谢谢
大于或等于输入且能被 8 整除的最小数:
return (input + 7) & ~7;
大于输入且能被 8 整除的最小数:
return (input + 8) & ~7;
尝试类似的东西
static inline int round_up_to_multiple_of_8 (int v)
{
return (v|7)+1;
}
这是有效的,因为 8 是 2 的幂,因此设置 3 个最低位会给出低于 8 的下一个倍数的数字。
r = x mod 8; x+r 是你的答案
一般来说,你会这样做:
int roundUp(int input, int round)
{
return input + round - (input % round);
}
但是对于 8 的情况,其他解决方案通常会运行得更快。