2

数値の2進数に相当するものを表示するために次のコードを試しましたが、エラーが発生し、エラーの背後にある理由がわかりません。

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)

4

2 に答える 2

5

Error is a result of operator order of precedence, to fix it you simply need to add parentheses, change:

if(num &(1<<i)==1)

to

if((num & (1<<i)) == 1)
于 2012-10-29T17:36:25.257 に答える
2

演算子の優先順位エラー、試してくださいif ((num & (1<<i)) == 1)

には32ビットしかintありません。forループ述語を。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");
于 2012-10-29T17:42:07.867 に答える