可能很简单的问题,但我提出的这个实现看起来太复杂了......
unsigned int x;
unsigned int z;
unsigned int makeXMultipleOfZ(const unsigned x, const unsigned z) {
return x + (z - x % z) % z;
//or
//return x + (z - (x + 1) % z - 1); //This generates shorter assembly,
//6 against 8 instructions
}
- 我想避免 if 语句
- 如果这可以帮助我们可以肯定地说 z 将是 2 的幂
在我的情况下z=4
(我知道我可以用&
位运算符替换模运算),我想知道是否可以提供包含更少步骤的实现。