好的,所以对于一个程序我需要知道两个事实,输入的长度和这个长度最接近的最高数字可以被4整除。 例如。 如果长度为1,我想记录4。 如果长度是3,我想记录4。 如果长度为5,我想记录8。
在数学上我可以将长度除以4,这给出了小数。如果我把它四舍五入,时间到4,它就给了我需要的答案。 那么,我如何让C来整理int的内容呢?我可能会过于复杂,所以请说如果我错过了一些简单的事情。
编辑:我应该补充一下,我已经知道了长度,这是我自己想要的东西。
答案 0 :(得分:8)
(length+3)/4*4
答案 1 :(得分:4)
利用4
是2的幂的事实,过于聪明的回答:
long rounded = length + 3 & -4UL;
答案 2 :(得分:2)
(i + (4 - (i % 4)) % 4)
请参阅http://ideone.com/zZ181进行演示
答案 3 :(得分:2)
最直观的答案是2的幂是(length+3) & ~3
(不是以前的答案提到的~4。我们屏蔽了添加3的1和2位。)