有人可以解释一下这是做什么的:n& 1?

时间:2017-09-06 16:16:18

标签: c++

这是代码,我知道它做了什么,但我不明白,if条件是做什么的?

if(n&1)
    {
        for(i=n/2,j=n/2+1;;i--,j++)
         if(__gcd(i,j)==1)
         {
            cout<<i<<" "<<j<<endl;
            break;
         }
    }
    else 
    {
        for(i=n/2-1,j=n/2+1;;i--,j++)
         if(__gcd(i,j)==1)
         {
            cout<<i<<" "<<j<<endl;
            break;
         }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:3)

它是一个按位运算符。这是一个搜索词!

&amp;运算符提供了一个掩盖&#34;取消&#34;第一个中的位依赖于它们是否在第二个参数中设置 - 因此假设N是数字17,以二进制表示的是00010001,二进制中的数字1是00000001,因此将两个屏蔽在一起将是&#34;空白&#34;第一组位,将N作为00000001。

基本上,特定if语句会丢弃除最后一位之外的所有位,即0或1,因此它是检测N是奇数还是偶数的条件。