【发布时间】:2019-06-17 08:20:52
【问题描述】:
如果数字是奇数(也适用于负数),如何仅按位(移位、与、或、异或..)四舍五入到偶数?
例子:
- 输入:3;输出:4
- 输入:4;输出:4
- 输入:5;输出:6
- 输入:6;输出:6
- 输入:-14;输出:-14
- 输入:-15;输出:-14
我尝试了什么:到目前为止这有效,但似乎有点多余?
(((n + 1) >> 1) << 1)
有没有更短的解决方案?
【问题讨论】:
-
n+(n&1) 略短。
-
还有
n + 1 & -2(这也概括为四舍五入到其他二的幂) -
@AlainMerigot 如果您将其写为答案,我会接受您的答案。
标签: algorithm rounding bitwise-operators bit shift