Mig*_*uel 3 c# bit-manipulation
是否有更短更好看的替代品
(b == 0) ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
在按位运算方面?
另外,要获取a我正在使用的给定整数的正确符号(-1,0或1)
(a > 0) ? 1 : (a >> 32);
Run Code Online (Sandbox Code Playgroud)
有没有更短(但不慢)的方式?
就个人而言,我坚持你的"等于或不等于"选项的第一个选项.
对于整数的符号,我将使用Math.Sign并假设JIT编译器将内联它 - 如果它被证明是一个潜在的瓶颈,则使用基准测试该假设.
首先考虑一下可读性 - 你的第一段代码非常明显.你的第二个不是.我甚至不相信你的第二段代码有效 ......我认为右移有效地被掩盖到底部的5位,假设这是一个Int32(int).
编辑:刚检查,确实你当前的第二段代码相当于:
int y = x > 0 ? 1 : x;
Run Code Online (Sandbox Code Playgroud)
转换甚至不会在编译的代码中结束.
将此作为关于微观优化而不是可读性的更多关注课程.如果易于理解 ,使代码工作要容易得多.如果你的代码给出错误的结果,我不关心它的运行速度.