2

私は次のような整数を持っています:

0x10000010

特定のビットが1か0かを知りたいのですが。たとえば、次のようになります。

int number = 0x10000010;
for (int i = 0; i < 8; i++) {
    if (ith bit == 1) {
        System.out.println("bit " + i + " is 1.");
    } else {
        System.out.println("bit " + i + " is 0.");
    }
}

---- output ----
bit 0 is 1
bit 1 is 0
bit 2 is 0
bit 3 is 0
bit 4 is 0
bit 5 is 0
bit 6 is 1
bit 7 is 0

これを行う方法と、このタイプの操作と呼ばれるものを忘れてしまいました。

ありがとう

4

2 に答える 2

8

number & (1 << i)ビットが設定されていない場合は0になり、設定されている場合はゼロ以外になります。

于 2012-08-30T16:42:33.530 に答える
3

dtyの答えに似ています

int number = 0b10000010; // you are assuming this is binary not hex.
for (int i = 0; i < 8; i++) {
    if((number >> i) & 1 != 0)
        System.out.println("bit " + i + " is 1.");
     else 
        System.out.println("bit " + i + " is 0.");
}

また

int number = 0b10000010; // you are assuming this is binary not hex.
for (int i = 0; i < 8; i++) 
    System.out.println("bit " + i + " is " + ((number >> i) & 1));
于 2012-08-30T16:59:56.920 に答える