Битовые операции
Системы счисления
Позиционные системы счисления
Двоичная система счисления
Восьмеричная система счисления
Способы перехода между системами счисления, основания которых есть степени двойки.
Шестнадцатеричная система счисления
Домашнее задание
Введение в битовые операции
Цели и задачи лекции
Что такое побитовые операции и зачем они нужны
Что такое побитовые операции и зачем они нужны
Побитовые операции
& : поразрядная конъюнкция
| : поразрядная дизъюнкция
^ : Исключающее “ИЛИ”
~ : поразрядное отрицание или инверсия.
Операции арифметического сдвига
Оператор побитового арифметического сдвига вправо >>: A>> B
Контрольный пример для битовой операции temp = -14 >> 2
Оператор побитового арифметического сдвига влево <<: A<< B
Контрольный пример для битовой операции temp = -14 << 2
Особенности применения сдвигов
Пример
Битовые операции для выключения битов
Битовые операции для включения битов
Пример исключающего или (XOR)
Применение битовой инверсии
Совмещение битовых операций с присваиванием
Функция форматированного ввода
Функция форматированного вывода
Целочисленные константы на С++
Функция форматированного ввода/вывода чисел в 8-й и 16-й системах счисления
Функция форматированного ввода/вывода чисел в 8-й и 16-й системах счисления
Результаты работы программы
Пример 2 задачи на применение битовых операций
Контрольный пример для 3010984133310 =B377F8C516
Пример 3 задачи на применение битовых операций
Ключевые понятия по теме "Битовые операции Ключевые понятия по теме "Битовые операции на C++"
Ключевые понятия по теме "Битовые операции Контрольные вопросы
Ключевые понятия по теме "Битовые операции Задача_на самостоятельный анализ кода
709.12K
Категория: ПрограммированиеПрограммирование

Лекция 02_Битовые операции на С++

1. Битовые операции

Лекция 2
1

2.

Петрова Наталья Константиновна, к.ф.-м.н, доц. ИИУС
WhatsApp +7 965 593 25 71 (только для сообщений)
E-mail: students_kgeu@mail.ru
Название курса в Moodle
https://lms2.kgeu.ru/course/view.php?id=395
«Алгоритмизация и программирование на С++ (2025)” (АПС++) –
ключевое слово АИП
https://lms2.kgeu.ru/course/view.php?id=186
«Программирование (2024)» - ключевое слово ПИ2024
2

3. Системы счисления

3

4.

Позиционные системы
Позиционная система: значение цифры определяется
ее позицией в записи числа.
Десятичная система:
первоначально – счет на пальцах
изобретена в Индии, заимствована арабами, завезена в Европу
Алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Основание (количество цифр): 10
сотни десятки единицы
2
1
0
3 7 8
300 70
разряды
= 3·102 + 7·101 + 8·100
8
Другие позиционные системы:
• двоичная, восьмеричная, шестнадцатеричная (информатика)
• двенадцатеричная (1 фут = 12 дюймов, 1 шиллинг = 12 пенсов)
• двадцатеричная (1 франк = 20 су)
• шестидесятеричная (1 минута = 60 секунд, 1 час = 60 минут)
4

5. Позиционные системы счисления

q – основание с.с. = числу цифр
anan-1…a0…am – число записанное цифрами
с.с. может быть представлено позиционной
формулой:
anan-1…a0…am=
= an qn +…+ an qn +a0 + am q-1 … am q-m
5

6. Двоичная система счисления

7.

Перевод целых чисел
Двоичная система:
Алфавит: 0, 1
Основание (количество цифр): 2
10 2
19
18
1
2
9
8
1
2
4
4
0
2
2
2
0
2 10
43210
19 = 100112
2
1
0
система
счисления
2
0
1
разряды
100112 = 1·24 + 0·23 + 0·22 + 1·21 + 1·20
= 16 + 2 + 1 = 19
7/32

8.

Арифметические операции
сложение
вычитание
0+0=0 0+1=1 перенос0-0=0 1-1=0
1+0=1 1+1=102
1-0=1 102-1=1
заем
1 + 1 + 1 = 112
1 0 1 1 02
+ 1 1 1 0 1 12
1 0 1 0 0 0 12
0 1 1 102 0 102
1 0 0 0 1 0 12

1 1 0 1 12
0 1 0 1 0 1 02
8

9.

Плюсы и минусы двоичной системы
• нужны технические устройства только с двумя
устойчивыми состояниями (есть ток — нет тока,
намагничен — не намагничен и т.п.);
• надежность и помехоустойчивость двоичных кодов;
• выполнение операций с двоичными числами для
компьютера намного проще, чем с десятичными.
• простые десятичные числа записываются в виде
бесконечных двоичных дробей;
• двоичные числа имеют много разрядов;
• запись числа в двоичной системе однородна, то
есть содержит только нули и единицы; поэтому
человеку сложно ее воспринимать.
9

10. Восьмеричная система счисления

11.

Восьмеричная система
Основание (количество цифр): 8
Алфавит: 0, 1, 2, 3, 4, 5, 6, 7
10 8
100 8
96 12 8
8 1
4
4 0
100 = 1448
8
0
1
система
счисления
8 10
210
разряды
1448 = 1·82 + 4·81 + 4·80
= 64 + 32 + 4 = 100
11/32

12. Способы перехода между системами счисления, основания которых есть степени двойки.

Для того, чтобы осуществить переход от системы с основанием 2n к
системе с основанием 2m, необходимо:
1. Сопоставить каждой цифре числа n–разрядное двоичное число,
получив его полный двоичный код.
2. Разбить число на группы длиной m.
3. Сопоставить каждой группе цифру m-разрядной системе
счисления.
4. Для реализации этого алгоритма рекомендуется заранее
составить таблицы представления цифр двоичными числами.
12/32

13.

Таблица восьмеричных чисел: 2n= 23
Каждой цифре сопоставляется 3-х разрядное двоичное число
X10
X8
X2
X10
X8
X2
0
0
000
4
4
100
1
1
001
5
5
101
2
2
010
6
6
110
3
3
011
7
7
111
13

14.

Перевод в двоичную и обратно
• трудоемко
• 2 действия
10
8
2
8 = 23
! Каждая восьмеричная цифра может быть
записана как три двоичных (триада)!
{
{
{
{
17258 = 001 111 010 1012
1
7
5
2
14

15.

Перевод из двоичной системы
10010111011112
Шаг 1. Разбить на триады, начиная справа:
001 001 011 101 1112
Шаг 2. Каждую триаду записать одной
восьмеричной цифрой:
001 001 011 101 1112
1
1
3
5
7
Ответ: 10010111011112 = 113578
15

16. Шестнадцатеричная система счисления

17.

Шестнадцатеричная система
Основание (количество цифр): 16
Алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
10 11 12 13 14 15
10 16 107 16
96
6 16
107 = 6B16
0 0
11
B
система
6
счисления
16 10
C
1C516 = 1·162 + 12·161 + 5·160
= 256 + 192 + 5 = 453
2 1 0 разряды
17/32

18.

Таблица шестнадцатеричных чисел 2n= 24
X10
X16
X2
X10
X16
X2
0
0
0000
8
8
1000
1
1
0001
9
9
1001
2
2
0010
10
A
1010
3
3
0011
11
B
1011
4
4
0100
12
C
1100
5
5
0101
13
D
1101
6
6
0110
14
E
1110
7
7
0111
15
F
1111
18

19.

Перевод в двоичную систему
• трудоемко
• 2 действия
10
16
2
16 = 24
! Каждая шестнадцатеричная цифра может быть
записана как четыре двоичных (тетрада)!
{
{
{
{
7F1A16 = 0111 1111 0001 10102
7
F
A
1
19

20.

Перевод из двоичной системы
10010111011112
Шаг 1. Разбить на тетрады, начиная справа:
0001 0010 1110 11112
Шаг 2. Каждую тетраду записать одной
шестнадцатеричной цифрой:
0001 0010 1110 11112
1
2
E
F
Ответ: 10010111011112 = 12EF16
20

21.

Перевод в восьмеричную и обратно
трудоемко
10
16
8
2
Шаг 1. Перевести в двоичную систему:
3DEA16 = 11 1101 1110 10102
Шаг 2. Разбить на триады:
011 110 111 101 0102
Шаг 3. Триада – одна восьмеричная цифра:
3DEA16 = 367528
21

22. Домашнее задание

• Научиться самостоятельно получать таблицы
соотношения 3-хразрядных двоичных кодов 8-м
цифрам, и 4-х разрядных – 16-м цифрам
• 352 10 ?2 ?8 ?16
• 101011 2 ?10
• 264 8 ?2 ?10
• 1FC8 ?2 ?10
22

23. Введение в битовые операции

23

24. Цели и задачи лекции

Цель – освоить принципы работы операций с данными на
битовом уровне.
Задача – научиться разрабатывать программы заданной
сложности, эффективно применяя операции с битами.
План лекции
1. Обоснование необходимости битовых операций
2. Список битовых операций и их приоритеты
3. Задачи, в которых необходимо применять битовые
операции.
24

25. Что такое побитовые операции и зачем они нужны

Побитовые операторы манипулируют отдельными битами в пределах переменной.
В далёком прошлом компьютерной памяти было очень мало и ею сильно дорожили. Это
было стимулом максимально разумно использовать каждый доступный бит.
Например, в логическом типе данных bool есть всего лишь два возможных значения
(true и false), которые могут быть представлены одним битом, но по факту занимают
целый байт памяти! А это, в свою очередь, из-за того, что переменные используют
уникальные адреса памяти, а они выделяются только в байтах. Переменная bool
занимает 1 бит, а другие 7 тратятся впустую.
Используя побитовые операторы, можно создавать функции, которые позволят уместить
8 значений типа bool в переменной размером 1 байт, что значительно сэкономит
потребление памяти. В прошлом такой трюк был очень популярен. Но сегодня, по
25
крайней мере, в прикладном программировании, это не так.

26. Что такое побитовые операции и зачем они нужны

• Язык Си поддерживает все существующие битовые операторы.
Поскольку Си создавался, чтобы заменить ассемблер, то была
необходимость поддержки всех (или по крайней мере большинства)
операций, которые может выполнить ассемблер.
• Битовые операции — это тестирование, установка или сдвиг битов в
байте или слове, которые соответствуют стандартным типам языка Си
char и int.
• Битовые операторы не могут использоваться с float, double, long
double, void и другими сложными типами.
• При работе с побитовыми операторами в рамках данного курса
рекомендуется использовать целочисленные типы данных unsigned.
• Для разработки контрольного примера, если условие задачи
позволяет, использовать unsigned short int или unsigned char
26

27. Побитовые операции

При работе с побитовыми операторами лучше
использовать целочисленные типы данных unsigned.
27

28. & : поразрядная конъюнкция

& : поразрядная конъюнкция
(операция «И» или поразрядное умножение).
Возвращает 1, если оба из соответствующих
разрядов обоих чисел равны 1.
Рассмотрим выражение 14 & 5:
1 1 1 0 // 14
&
0 1 0 1 // 5
-------------0 1 0 0 // 4
28

29. | : поразрядная дизъюнкция

(операция «ИЛИ» или поразрядное сложение). Возвращает 1, если
хотя бы один из соответствующих разрядов обоих чисел равен 1.
Рассмотрим выражение 10 | 7:
1 0 1 0 // 10
|
0 1 1 1 // 7
--------------1 1 1 1 // 15
29

30. ^ : Исключающее “ИЛИ”

Побитовое исключающее ИЛИ (^) (англ. «XOR» от «eXclusive OR«). При
обработке двух операндов, исключающее ИЛИ возвращает true (1),
только если один и только один из операндов является истинным (1).
Если таких нет или все операнды равны 1, то результатом будет false (0).
Рассмотрим выражение 6 ^ 3:
0 1 1 0 // 6
^
0 0 1 1 // 3
--------------0 1 0 1 // 5
30

31. ~ : поразрядное отрицание или инверсия.

Инвертирует все разряды операнда. Если разряд равен 1, то он
становится равен 0, а если он равен 0, то он получает значение 1.
Рассмотрим выражение ~ 9:
~ 1 0 0 1 // 9
0 1 1 0 // 6
31

32. Операции арифметического сдвига

Операции битового сдвига могут быть полезны при декодировании
информации от внешних устройств и для чтения информации о
статусе.
Операторы битового сдвига могут также использоваться для
выполнения быстрого умножения и деления целых чисел.
32

33. Оператор побитового арифметического сдвига вправо >>: A>> B

Оператор побитового арифметического
сдвига вправо >>: A>> B
- Оператор >> сдвигает вправо биты
выражения A на количество битов,
указанных в выражении B.
- Для заполнения позиций слева
используется бит знака значения A.
- Цифры, сдвинутые за пределы
диапазона, удаляются.
-Тип данных, возвращаемых данным
оператором, определяется типом
данных выражения A.
Например:
short int temp
temp = -14 >> 2
после вычисления этого кода
переменная temp имеет значение -4,
поскольку при сдвиге значения -14
(11110010 в двоичном выражении)
на два бита в право получается
значение -4 (11111100 в двоичном
выражении).
33

34. Контрольный пример для битовой операции temp = -14 >> 2

битыбитовой операции
Контрольный примерЧётные
для
temp = -14 >> 2
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
код
15З
н
а
к
15
14
13
12
11
10
09
08
07
06
05
04
03
02
01
Прям.
1
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
Обр.
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
инверси
я
Доп.
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
+1
>>2
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
0
Получили дополнительный код отрицательного числа 1’11111111111100.
Проделаем обратную процедуру (вычитаем 1) => обратный код: 1’111111111111011
Прямой код числа (инвертируем все биты, кроме знакового) 1’00000000000100
и применим позиционную формулу для получения десятичного числа 1’00000000000100 = - 410
34

35. Оператор побитового арифметического сдвига влево <<: A<< B

Оператор побитового
арифметического сдвига влево <<:
A<< B
- Оператор << сдвигает влево
биты выражения A на
количество битов, указанных в
выражении B.
- “Выталкиваемые наружу”
биты пропадают,
освобождающиеся биты
заполняются нулями.
- Тип данных, возвращаемых
данным оператором,
определяется типом данных
выражения А.
Например:
short int temp
temp = -14 << 2
после вычисления этого
кода переменная temp
имеет значение -56,
поскольку при сдвиге
значения -14 (11110010 в
двоичном выражении) на
два бита влево
получается значение -56
(10111000 в двоичном
выражении).
35

36. Контрольный пример для битовой операции temp = -14 << 2

Контрольный пример для битовой операции
temp = -14 << 2
1111 1111 1111 0010 – дополнительный код -14
Сдвиг влево на 2 позиции:
1111 1111 1100 1000 – дополнительный код нового числа
Теперь мы должны понять, что означает 1111 1111 1100 1000 в десятичной системе
Это число также представлено в дополнительном коде:
Инвертируем биты (кроме знакового бита): 1000 0000 0011 0111.
Добавляем 1: 1000 0000 0011 1000, что равно -3816 = -5610.
При большом значении сдвига мы можем выйти за пределы выделенной памяти
и потерять значимые биты, в результате, отрицательное число может стать
положительным и/или не соответствовать ожидаемому значению.
36

37. Особенности применения сдвигов

• Операторы битового сдвига могут также использоваться для
выполнения быстрого умножения и деления целых чисел.
• Сдвиг влево равносилен умножению на 2, а сдвиг вправо делению на 2 (четных чисел).
• Сдвинутые биты теряются, а с другого конца появляются нули. В
том случае, если вправо сдвигается отрицательное число, слева
появляются единицы (поддерживается знаковый бит).
37

38. Пример

Каждый сдвиг влево приводит к умножению на 2. Обратим внимание, что после
сдвига х << 2 информация теряется, поскольку биты сдвигаются за конец байта.
Каждый сдвиг вправо приводит к делению на 2. Обратим внимание, что деление не
вернуло потерянные при умножении биты.
38

39. Битовые операции для выключения битов

Битовое «И» чаще всего используется для выключения битов:
любой бит, установленный в 0, вызывает установку
соответствующего бита в другом операнде также в 0. Например,
следующий фрагмент программы читает символы, вводимые с
консоли, и сбрасывает бит четности (старший бит) в 0:
char ch, ch1;
cin >> ch;
ch1 = ch & 127;
cout << ch1<<endl;
39

40.

⁻ В последовательной передаче данных часто используется формат
7 бит данных, бит чётности, один или два стоповых бита. Такой
формат аккуратно размещает все 7-битные ASCII символы в
удобный 8-битный байт.
⁻ В следующем примере показано, как работает данный фрагмент
программы с битами. В нём предполагается, что ch имеет символ
'А' и имеет бит четности:
char ch, ch1;
cin >> ch;
ch1 = ch & 127;
cout << ch1<<endl;
Бит чётности
40

41. Битовые операции для включения битов

Битовое «ИЛИ» может использоваться для установки (включения) битов:
любой бит, установленный в любом операнде, вызывает установку
соответствующего бита в другом операнде. Например, в результате операции
128 | 3 получаем*:
* Число 3 в данном случае выполняет функцию «маски» - число, используемое
для выборки или изменения определенных битов в другом числе
41

42. Пример исключающего или (XOR)

- Исключающее ИЛИ (XOR) ) устанавливает бит,
если соответствующие биты в операндах
отличаются. Например, в результате операции
127 ^ 120 получаем:
42

43. Применение битовой инверсии

• Оператор битового дополнения ~ инвертирует состояние каждого
бита указанной переменной, то есть 1 устанавливается в 0, а 0 — в 1.
• Битовые операторы часто используются в процедурах шифрования.
Если есть желание сделать дисковый файл нечитабельным, можно
выполнить над ним битовую операцию.
• Одним из простейших методов является использование битового
дополнения для инверсии каждого бита в байте, как показано ниже:
Следует обратить внимание, что в
результате выполнения двух битовых
дополнений получаем исходное число.
Следовательно, первое дополнение
будет создавать кодированную версию
байта, а второе будет декодировать.
43

44. Совмещение битовых операций с присваиванием

Все битовые операции выполняются слева направо. В
следующей строке приведены битовые операции в порядке
уменьшения их приоритета.
~, << >>, &, ^, |
44

45. Функция форматированного ввода

Функция printf отвечает за форматированный вывод данных на
экран. Она принимает строку формата, в которой задаются
спецификаторы, указывающие тип и формат отображаемых
значений. Например:
int age = 30; double height = 1.85; const char *name =
"Айгуль"; printf("Меня зовут %s, мне %d лет и мой рост %.2f
метра.\n", name, age, height);
В этом примере %s используется для вывода строки (имя), %d —
для целого числа (возраст), а %.2f — для числа с плавающей точкой
(рост), отображаемого с двумя знаками после запятой.
45

46. Функция форматированного вывода

Функция scanf используется для считывания данных с
клавиатуры. Она также принимает строку формата и адреса
переменных, в которые будут сохранены введенные значения.
Например:
int age; double height; char name[50];
printf("Введите ваше имя: "); scanf("%s", name);
printf("Введите ваш возраст: "); scanf("%d", &age);
printf("Введите ваш рост: "); scanf("%lf", &height);
printf("Меня зовут %s, мне %d лет и мой рост %.2f метра.\n",
name, age, height);
46

47. Целочисленные константы на С++

• Целочисленные данные в языке Си могут быть представлены в
одной из следующих систем счисления:
По умолчанию целочисленные константы имеют тип int.
47

48. Функция форматированного ввода/вывода чисел в 8-й и 16-й системах счисления

Для вывода чисел в восьмеричной и шестнадцатеричной
системах используются следующие спецификаторы:
Для восьмеричных чисел — %o
Для шестнадцатеричных чисел — %x (для строчных букв) или %X
(для заглавных букв)
Для работы с двоичными числами нет встроенного
спецификатора формата в стандартную библиотеку C, но можно
создать пользовательскую функцию для преобразования числа в
двоичную строку
48

49. Функция форматированного ввода/вывода чисел в 8-й и 16-й системах счисления

#include <iostream>
#include <locale.h>
int main() {
setlocale(LC_ALL, "rus");
int number;
// Ввод числа
printf("Введите целое число: ");
scanf_s("%d", &number);
// Вывод в десятичной, восьмеричной и шестнадцатериченой системах
счисления
printf("Десятичное: %d Восьмеричное: % o Шестнадцатеричное: %x\n",
number, number, number);
return 0;
}
49

50.

int main()
// главная функция программы
{
unsigned int a, b, sum; /* описание типов переменных */
Пример 1 программы с битовыми
операциями
setlocale(LC_ALL, "rus"); // для вывода русского шрифта в консоль
printf("\nВведите a\n");
scanf_s("%u", &a); /* вводим a */
printf("\nВведите b\n");
scanf_s("%u", &b); /* вводим a */
sum = a + b; /* нашли сумму */
printf("\nСумма равна a и b =%u", sum); /* вывели сумму на монитор */
sum = sum & 0xfff9; /* установили 2 и 1 биты в 0
fff9, в двоичной системе
0000 0000 0000 0000 1111 1111 1111 1001*/
sum |= 0x8;
/* установили 3 бит в 1
8, в двоичной системе
0000 0000 0000 0000 0000 0000 0000 1000 */
printf("\nПосле преобразования sum=%u\n", sum);
system("pause");
return 0; // вернулись в среду разработки
}
50

51. Результаты работы программы

• 2210=1616=0000 0000 0001 01102 – тип unsigned int
• 0xfff9= 1111 1111 1111 1001 – по умолчанию эта
константа имеет тип int и имеет, соответственно, 32
бита, но старшие 16 бит никак не повлияют на тип
unsigned int и мы, можем старшие 16 бит не
рассматривать.
51

52. Пример 2 задачи на применение битовых операций

Написать программу, которая позволит ввести число x типа unsigned int с
клавиатуры, напечатать его и, используя битовые операции, поменять в
нем четверки и восьмерки бит по схеме
52

53. Контрольный пример для 3010984133310 =B377F8C516

1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 01 1 0 0 0 1 0 1
0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 1 1 0 01 0 0 0 1 1 1 1
7
7
B
3
5
C
8
F
ПОЛУЧИЛИ: 77B35C8F16 =7 167+ 7 166 + … + F 160 = 2008243343 10
53

54.

int main()
{unsigned int lx, l41, l42, l43, l44, l83;
setlocale(LC_ALL, "rus"); // для вывода русского шрифта в консоль
printf("\n Введите число : "); /* поясняющая надпись */
scanf_s("%u", &lx); /* вводим число */
printf("\n Введено число lx = %u ( 16-format: %X) \n", lx,lx); /*
вывели число */
l41 = lx & 0xf; /* нашли первую четверку */
l42 = lx & 0xf0; /* нашли вторую четверку */
l43 = lx & 0xf00; /* нашли третью четверку */
l44 = lx & 0xf000; /* нашли четвертую четверку */
l83 = lx & 0xff0000; /* нашли третью восьмерку */
/* поставили четвертую восьмерку на место третьей
и обнулили младшие шестнадцать и старшие 8 бит */
lx = (lx >> 8) & 0xff0000;
/* поставили все на место */
lx += (l41 << 12) + (l42 << 4) + (l43 >> 4) + (l44 >> 12) + (l83 <<
8);
/* вывели полученное значение на монитор */
printf("\n После преобразования число равно %ld ( 16-format: %X)\n",
lx, lx);
system("pause");
return 0; }
54

55.

ПОЛУЧИЛИ: 77B35C8F 16 = 2008243343 10
55

56. Пример 3 задачи на применение битовых операций

Дано число k, 0 ≤ k ≤ 31. Не используя арифметические операторы
сложения, умножения, вычитания, деления, взятия остатка, вычислить 2k,
применяя побитовые операторы
&, |, ~, ^, <<, >>.
Контрольный пример:
20 = 110 = 000000012
21 = 210 = 000000102
22 = 410 = 000001002
…..
Очевидно, что степень k позволяет сместить 1 влево на k позиций
56

57.

int main()
{
unsigned int k, n=1,m; /* описание типов переменных */
setlocale(LC_ALL, "rus"); // для вывода русского шрифта в консоль
printf("\n Введите число k: "); /* поясняющая надпись */
scanf_s("%ld", &k); /* вводим число */
printf("\n Введено число k = %ld \n", k); /* вывели число */
m = n << k;
printf("\n 2^k = %ld ( 16-format: %X)\n", m, m);
system("pause");
}
return 0; // вернулись в операционную систему
57

58. Ключевые понятия по теме "Битовые операции Ключевые понятия по теме "Битовые операции на C++"

Ключевые понятия по теме "Битовые операции
Ключевые понятия по теме "Битовые операции на C++"
- Бит: Наименьшая единица данных в компьютере, которая может принимать значение 0 или 1.
- Битовые операции: Операции, которые выполняются над отдельными битами целых чисел.
- Побитовые операции: Операции, которые применяются к каждому биту числа, такие как AND, OR,
XOR, NOT.
- Сдвиг битов: Операции, которые перемещают биты числа влево или вправо, что может
использоваться для умножения или деления на 2.
- Маска: Число, используемое для выборки или изменения определенных битов в другом числе.
- Побитовая конъюнкция (AND): Операция, которая возвращает 1 только если оба бита равны 1.
- Побитовая дизъюнкция (OR): Операция, которая возвращает 1 если хотя бы один из битов равен 1.
- Побитовая исключающая дизъюнкция (XOR): Операция, которая возвращает 1 если биты
различны.
- Инверсия (NOT): Операция, которая меняет 0 на 1 и 1 на 0.
58

59. Ключевые понятия по теме "Битовые операции Контрольные вопросы

Ключевые понятия по теме "Битовые операции
Контрольные вопросы
- Что такое бит и какова его роль в представлении данных?
- Какие основные побитовые операции существуют в C++?
- Как работает операция побитового AND?
- Как можно использовать сдвиг битов для умножения и деления?
- Что такое маска и как она используется в битовых операциях?
- Как работает операция побитового XOR и в каких случаях она может быть полезна?
- Как можно инвертировать биты числа с помощью операции NOT?
59

60. Ключевые понятия по теме "Битовые операции Задача_на самостоятельный анализ кода

Ключевые понятия по теме "Битовые операции
Задача_на самостоятельный анализ кода
Какой результат программа выдаст на консоль, если на её запрос ввести число
AF9C?
int main() {
int number;
cout << "Введите целое число: ";
cin >> number;
if (number & 1) {
cout << "Число нечетное." << endl;
number &= ~(1 << 3);
}
else {
cout << "Число четное." << endl;
number |= (1 << 3);
}
cout << “\number = " << number << endl;
60
English     Русский Правила