Объясните работу программы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Объясните, пожалуйста, следующий код:
#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);
   }
}
Результат выполнения: ----------------------------- 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.

Решение задачи: «Объясните работу программы»

textual
Листинг программы
bit_a = (i & 2) >> 1

Объяснение кода листинга программы

  1. Переменная i содержит некий двоичный байт.
  2. Результат операции i & 2 равен 2, если самый левый бит числа i равен 1, иначе 0.
  3. Результат 2 >> 1 равен 1, так как двоичное число 2 переводится в десятичное сдвигом вправо на 1 позицию.
  4. Результат выражения (i & 2) >> 1 равен 1, если самый левый бит числа i равен 1, иначе 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы