我尝试使用以下代码来显示数字的二进制等效值,但是我收到错误而且我没有得到错误背后的原因:
using System;
class NumToBin{
static void main(){
int num=7;
for(int i=0;i<=32;i++){
if(num &(1<<i)==1)// getting an error on this line
Console.WriteLine("1");
else
Console.WriteLine("0");
}
Console.ReadKey(true);
}
}
上面的代码我得到以下错误,我不知道这个错误背后的原因?
Operator '&' cannot be applied to operands of type 'int' and 'bool' (CS0019)
答案 0 :(得分:5)
答案 1 :(得分:2)
运算符优先级错误,请尝试if ((num & (1<<i)) == 1)
int
中只有 32位。将循环谓词更改为i < 32
,而不是i<=32
。
或:
for(int i=0; i < 32; i++)
Console.WriteLine((num & (1<<i)) == 0 ? "0" : "1");
<强>已更新强>
for(int i=31; 0 <= i; --i)
Console.WriteLine(((num >> i) & 1) == 0 ? "0" : "1");