如何将数字更改为可被8整除

时间:2012-09-25 07:33:46

标签: c numbers

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

对于两个人的权力是否存在一般解决方案?

由于

4 个答案:

答案 0 :(得分:3)

大于或等于输入的最小数字,可被8整除:

return (input + 7) & ~7;

大于输入的最小数字,可被8整除:

return (input + 8) & ~7;

答案 1 :(得分:2)

尝试类似

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

一般来说,你会这样做:

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

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