Repository navigation
Expand file tree
/
Copy pathbitwise.c
More file actions
47 lines (39 loc) · 2.22 KB
/
Copy pathbitwise.c
File metadata and controls
47 lines (39 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
int main() {
/*
Битовые (поразрядные) операции
В питоне я с ними так и не разобрался, пришло время разбираться :d
*/
/*
Операции сдвига
Каждое число в памяти представлено в виде разрядов, операции сдвига позволяют сдвинуть число по разрядам влево или вправо
Слева определяется число для сдвига, а справа на сколько разрядов его нужно сдвинуть
*/
// Сдвиг разряда влево
int a = 4 << 2; // 4 сдвигается на 2 разряда влево
printf("4 << 2: %d\n", a);
// Сдвиг разряда вправо
int b = 3 >> 6; // 3 сдвигается вправо на 6 разрядов
printf("3 >> 6: %d\n", b);
/*
Поразрядные операции
*/
// Поразрядная конъюкция (И или поразрядное умножение). (AND)
// Возвращает 1, если оба из соответствующих разрядов обоих чисел равны 1
int c = 5 | 3;
printf("c: %d\n", c);
// Поразрядная дизъюкция (ИЛИ или поразрядное сложение) (OR)
// Возвращает 1, если хотя бы один из соответствующих разрядов обоих чисел равен 1
int d = 8 & 2;
printf("d: %d\n", d);
// Поразрядное исключающее ИЛИ (XOR)
// Возвращает 1, если только один из соответствующих разрядов обоих чисел равен 1
int e = 5 ^ 2;
printf("e: %d\n", e);
// Поразрядное отрицание инвертирует разряды операнда (NOT)
// Если разряд равен 1, то он становится равен 0, а если он равен 0, то он получает значение 1.
int f = 6;
int g = ~f;
printf("g: %d", g);
return 0;
}