Что делает программа. Битовые операции
#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.