Объясните работу программы - C (СИ)
Формулировка задачи:
Объясните, пожалуйста, следующий код:
Результат выполнения:
-----------------------------
bitwise OR operator |
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
bitwise AND operator &
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
-----------------------------
Смысл программы я понимаю. Вывести работу операторов | и &. Я не понимаю строчки "(i & 2), (i & 1)". Каким образом тут происходит вычисление, если мы по сути делаем следующее: (0 И 2) делить на 2.
#include <stdio.h>
int main() {
int i, bit_a, bit_b;
printf("bitwise OR operator |\n");
for(i=0; i < 4; i++) {
bit_a = (i & 2) / 2;
bit_b = (i & 1);
printf("%d | %d = %d\n", bit_a, bit_b, bit_a | bit_b);
}
printf("\nbitwise AND operator &\n");
for(i=0; i < 4; i++) {
bit_a = (i & 2) / 2;
bit_b = (i & 1);
printf("%d & %d = %d\n", bit_a, bit_b, bit_a & bit_b);
}
}Решение задачи: «Объясните работу программы»
textual
Листинг программы
bit_a = (i & 2) >> 1
Объяснение кода листинга программы
- Переменная
iсодержит некий двоичный байт. - Результат операции
i & 2равен 2, если самый левый бит числаiравен 1, иначе 0. - Результат
2 >> 1равен 1, так как двоичное число 2 переводится в десятичное сдвигом вправо на 1 позицию. - Результат выражения
(i & 2) >> 1равен 1, если самый левый бит числаiравен 1, иначе 0.