嗨,这是一个面试问题。
对于任何给定的数字,计算下一个可以被 8 整除的数字。
即如果给定的数字是 43
,我们的算法应该生成 48
作为结果。如果数字已经被 8
整除,它应该说 Number already divisible by 8
并产生下一个可以被 8 整除的数字。
我建议他们任何可被 8
整除的数字的最后三位为 0
(LSB+2,LSB+1,LSB)。但我无法给出确切的解决方案。
我说的是解决这个问题的正确方法,还是我们可以寻求一些更聪明的解决方案? 我需要通过位操作来做到这一点。
最佳答案
你走在正确的轨道上。
int next8(int n) {
int bits = n & 7; // give us the distance to the previous 8
if (bits == 0) printf("Number already divisible by 8");
return n + (8-bits);
}
(注意:当本应是纯粹的函数打印某些东西时,我讨厌它,但任务要求如此。抱歉。)
关于c - 找到下一个除以 8 的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945462/