C哪个黑客更好,为什么?

ada*_*abo 1 c binary bit-manipulation

int n = 1; //Arbitrary value

for ( int i = 0;i < 8;i++ )
{
    printf( "%d",n & ( 1 << i ) ? 1 : 0 ); //Ternary
    printf( "%d",0 || n & ( 1 << i ) );    //Logical OR
}
Run Code Online (Sandbox Code Playgroud)

在循环中的两个表达式中,哪个是用于打印二进制值的0或1状态的更好选择?(基本上打印二进制字符串表示).

AnT*_*AnT 13

最好的是

  (n >> i) & 0x1
Run Code Online (Sandbox Code Playgroud)

它比任何其他通过"布尔"转换的方法更可靠地无分支.

在可能和合理的情况下,更喜欢向右移动,以便您感兴趣的位最终位于正确的位置以形成您需要的结果,从而无需任何额外的步骤.