<分区>
for (int i = 7; i >= 0;i--) {
cout << ((c >> i) & 1);
这需要一个 char,c 并打印出它的二进制。这是如何工作的,特别是第二行。
<分区>
for (int i = 7; i >= 0;i--) {
cout << ((c >> i) & 1);
这需要一个 char,c 并打印出它的二进制。这是如何工作的,特别是第二行。
最佳答案
它分别取位置 7 到 0 的位,即从左到右的位,并且对于每个位,写出 1 或 0。& 1
用于隔离右移 i
位后的第 i 位。
例子:
给定 char 'A',相当于二进制的 0x41
或 01000001
:
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
关于c++ - 这里到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677133/