Объясните работу программы - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д