这到底发生了什么?

时间:2013-02-03 20:48:18

标签: c++ bit-manipulation bitwise-operators bitwise-and

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

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

2 个答案:

答案 0 :(得分:4)

它分别取位于7到0的位,即从左到右的位,并且每个位都写出1或0. & 1用于隔离第i位将其右移i个地方。

示例:

给定字母'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

答案 1 :(得分:1)

它将下一位从char c移到右边。然后,如果设置了该位,AND与1将返回1的结果,否则返回0。