关闭最右边的设置位
Turn off the rightmost set bit
int n;
cin>>n;
int i=1,m=1;
while(n&i==0)
{
i=i<<1;
m++;
}
//now flip mth set bit from right;
int ans=n^(1<<(m-1));
cout<<ans<<endl;
上面代码中取消设置整数最右边的位有什么错误?
在 C++ 中,==
运算符的 precedence 高于 &
运算符,因此 n&i==0
不是您想要的。
使用 (n&i)==0
而不是那个。
int n;
cin>>n;
int i=1,m=1;
while(n&i==0)
{
i=i<<1;
m++;
}
//now flip mth set bit from right;
int ans=n^(1<<(m-1));
cout<<ans<<endl;
上面代码中取消设置整数最右边的位有什么错误?
在 C++ 中,==
运算符的 precedence 高于 &
运算符,因此 n&i==0
不是您想要的。
使用 (n&i)==0
而不是那个。