0
for (int i = 7; i >= 0;i--) {
    cout << ((c >> i) & 1);

这需要一个 char, c 并打印出它的二进制文件。这是如何工作的,特别是第二行。

4

2 回答 2

4

它分别取位置 7 到 0 的位,即从左到右的位,并为每个位写出 1 或 0。& 1用于在将第 i 位右移后隔离它i

例子:

给定 char 'A',等价于0x4101000001二进制:

010000001 >> 7 ==> 0  ==> & 1 ==> 0
010000001 >> 6 ==> 01  ==> & 1 ==> 1
010000001 >> 5 ==> 010  ==> & 1 ==> 0
010000001 >> 4 ==> 0100  ==> & 1 ==> 0
010000001 >> 3 ==> 01000  ==> & 1 ==> 0
010000001 >> 2 ==> 010000  ==> & 1 ==> 0
010000001 >> 1 ==> 0100000  ==> & 1 ==> 0
010000001 >> 0 ==> 01000001  ==> & 1 ==> 1
于 2013-02-03T20:51:02.123 回答
1

它正在将下一位从 char c 向右移动。如果设置了该位,则与 1 的 AND 将返回结果 1,否则返回 0。

于 2013-02-03T20:51:58.513 回答