Что делает программа. Битовые операции

#include<stdio.h>
using namespace std;
 
int f (int x){
 
    unsigned mask = 0x1;
    // Постановка 0x перед числом позволяет вводить шестнадцатеричные числа.
 
    return (x & mask); // Битовое И (&)
  
}
int main () {
 
    int N = 19;
 
    printf ("The result is %d\n",f(N)); // 19
    printf ("The result is %d\n",f(2 * N + 1)); // 39
    printf ("The result is %d\n",f(2 * N)); // 38
    return 0;
}

Вывод:

The result is 1
The result is 1
The result is 0

Есть такая программа, надо разгадать что она делает. Тут используются битовые операции, я знаю что битовое И (&) сравнивает последовательно разряд за разрядом два операнда. Для каждого разряда результат равен 1, тогда и только тогда, когда оба соответствующих разряда операндов равны 1.

Но не могу понять конкретно что эта программа делает и как. Надеюсь на вашу помощь!


Ответы (1 шт):

Автор решения: Eugene X

Производит битовое сравнение И

Например:

int a = 1;  // Биты : 00000001
int b = 5;  // Биты : 00000101

int c =
    a & b; // Равно : 00000001   == 1

Где нижний бит накладывается на верхний

1 и 1 = 1
0 и 0 = 0
1 и 0 = 0

Дополнительную информацию можно найти на YT.

→ Ссылка