可能非常容易的問題,但我出來這個看起來太複雜的實現...查找大於或等於x(正整數)的整數z(正整數,可能是2的冪)的最小整數
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
(我硝酸鉀w我可以使用&
位操作符替換模操作),並且我想知道是否可以使用包含更少步驟的實現。
您認爲涉及多少個步驟?此外,這是四捨五入。 – sehe
爲什麼你想要避免if語句,爲什麼你認爲你做的方式太「複雜」? – Dukeling
我無法在任何地方找到這個主題,而且這似乎是一個簡單的操作,我希望可以實現更快的實現。 @Dickeling條件語句會使代碼更慢。 – Antonio