Rus*_*ell 2 c++ bit-manipulation
在C++中,是否有可能通过逐位技巧实现以下功能?
(i == 0) ? 1 : i
Run Code Online (Sandbox Code Playgroud)
假设这i是一个无符号的32位整数.
编辑:这是出于好奇.目标不是优化,显然不是为了提高可读性.
直到我看到其他方面的实际结果,我相信你的代码更清晰,同样快,但是如果没有条件,这些中的任何一个都会完成同样的事情:
i + !i
Run Code Online (Sandbox Code Playgroud)
要么
i | !i
Run Code Online (Sandbox Code Playgroud)
如果i为0,!i则为1.将0与1相加或按位OR组合始终给出1.如果i为非零,!i则为0.将非零值与0相加或按位OR组合始终给出该值.因此,如果i为0,i则结果为1 ,如果不为0 .
同样,如果其中任何一个实际上对编译器更好,我会感到惊讶.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |