-5

你能告诉我如何生成一个比可被 8 整除的输入数字更大的最小数字吗?(最好在 C 中)

有没有二的幂的一般解决方案?

谢谢

4

4 回答 4

4

大于或等于输入且能被 8 整除的最小数:

return (input + 7) & ~7;

大于输入且能被 8 整除的最小数:

return (input + 8) & ~7;
于 2012-09-25T07:37:00.643 回答
2

尝试类似的东西

static inline int round_up_to_multiple_of_8 (int v)
{
   return (v|7)+1;
}

这是有效的,因为 8 是 2 的幂,因此设置 3 个最低位会给出低于 8 的下一个倍数的数字。

于 2012-09-25T07:35:41.007 回答
0

r = x mod 8; x+r 是你的答案

于 2012-09-25T07:37:12.787 回答
0

一般来说,你会这样做:

int roundUp(int input, int round)
{
    return input + round - (input % round);
}

但是对于 8 的情况,其他解决方案通常会运行得更快。

于 2012-09-25T07:40:43.227 回答