Что именно здесь происходит?

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

Это берет символ, c и печатает это двоично. Как это работает, в частности, вторая строка.

0

Решение

Он принимает биты в позициях с 7 по 0 соответственно, то есть биты слева направо, и для каждого записывает либо 1, либо 0. & 1 используется для выделения i-го бита после его смещения вправо i мест.

Пример:

Учитывая символ ‘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
4

Другие решения

Он сдвигает следующий бит с символа c вправо. Тогда AND с 1 вернет результат 1, если этот бит был установлен, или 0, если нет.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector