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 回答