Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/56: Рейтинг темы: голосов - 56, средняя оценка - 4.84
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556

Для чего нужны битовые операции?

10.02.2016, 17:25. Показов 11597. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Дошел в книге Стенли до битовых операций, но никак не могу понять их предназначение.
Где вообще они используются и как с ними работать? Объясните, если это возможно, на простых примерах.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2016, 17:25
Ответы с готовыми решениями:

Битовые операции - перемещение бит для unsigned int
Помогите разобраться, задание: Создайте функцию, которая перемещает биты для unsigned int на 30 бит в право, причем выходящие при...

Битовые операции, битовые поля.
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций. Записать в unsigned int. Использовать...

Битовые последовательности и битовые операции
Вычислить сумму по модулю 2 всех бит в позициях, номер которых кратен 2^k. (1, 2, 4, 8, 16, 32). Исходное число содержит 8 байт. ...

24
12.02.2016, 20:26
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от makfak Посмотреть сообщение
И в каком фреймворке этот макрос имеется?
Ну он же сказал, gtest (Google's C++ test framework) :)

0
12.02.2016, 20:50

Не по теме:

DrOffset, И правда, чет не заметил. :(

0
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
12.02.2016, 21:59
Sabnik18, вот вам простой пример.

Возьмем простенький микроконтроллер. (Для них тоже пишутся программы на Си).
Что такое микроконтроллер? Это микросхемка, у которой есть определенное количество ножек.
Сама по себе эта штука в общем-то бесполезна - чудеса она делает, когда мы к ней что-то подключаем То есть в данном случае, утрируя - к ножкам подсоединяем проводки (на самом деле - дорожки на плате), и с помощью программы, записанной в эту микросхемку - считываем значения сигналов с одних ножек (0 или 1), и после каких-то вычислений - выдаем сигналы в виде 0 или 1 на другие ножки.

На этом этапе понятно? Если да, идем дальше.

Допустим, к выводам этого микроконтроллера у вас присоединено несколько переключателей (пусть, например, они управляют каким-то режимом работы устройства).

Архитектура микроконтроллеров устроена таким образом, что управление портами происходит часто не каждым выводом по отдельности, а всеми сразу. То есть к примеру - у нас есть 32 ножки, которыми мы можем управлять - так вот они на уровне адресации памяти объединены в байты. Соответствующие регистрам портов.
То есть, к примеру у вас есть восьмиразрядный порт ввода/вывода, и ему соответствует соответствующий регистр. Записав какую-то переменную в регистр - мы получаем на выводах порта последовательность нулей и единиц, соответствующее двоичному представлению записанной в регистр переменной.

И наоборот - мы хотим узнать, какие из наших переключателей включены, какие выключены. Мы считываем значение регистра. В нем в двоичном коде единички будут соответствовать включенным переключателям, нолики - выключенным.
Как узнать, к примеру, нажат ли третий переключатель? Вот тут и приходят на помощь битовые операции.

Мы производим со значением регистра проверку примерно таким образом:
C
1
2
3
4
5
6
7
8
9
10
11
unsigned char regvalue;
//....
//на каком-то этапе мы считали значение всех выводов из порта. Что-то типа такого: regvalue = ReadPort(addr); 
//как теперь определить состояние одной линии? Да вот так:
if (regvalue & (0x01 << 3) ){
//на третьей линии включен переключатель
}
else
{
//на третьей линии переключатель выключен
}
Если вам не понятно, я нарисую вам рисунок, как это работает.
4
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
13.02.2016, 09:54
Цитата Сообщение от Sabnik18 Посмотреть сообщение
Дошел в книге Стенли до битовых операций, но никак не могу понять их предназначение.
Где вообще они используются и как с ними работать? Объясните, если это возможно, на простых примерах.
Ну вот в этой теме простой пример как для решения логических задач их можно использовать.
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 7
14.02.2016, 02:18
Побитовые операции используется в основном, когда необходимо работать не с числами, а с потоками битов. Различные функции шифрования (которые используются каждым закрытым протоколом).

Различные блоковые, потоковые шифры работают на операции xor, &, |, и циклического смещения влево/вправо.
-----------
З.Ы. Самая любимая операция xor(символ ^ в с/с++): эта операция обратна сама себе, можешь попробовать сам:
https://www.cyberforum.ru/cgi-bin/latex.cgi?m \oplus k\oplus k = m
Где m -- это какое-то сообщение, k -- обычно, называется ключ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2016, 02:18

Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число
Даны числа x и y. Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число z=(27x+) mod 4. ...

Битовые операции. Написать программу для хранения в битовом поле информации о конфигурации компьютера.
1. Написать программу для хранения в битовом поле информации о конфигурации компьютера. Например: Корпус AT – 0, ATX – 1; Видео на борту –...

Битовые операции и операции смещения языка С
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает верно(переводит обычные числа в 16-ти ричные),а...

Битовые операции (написать функцию для сброса в ноль двух битов с заданными номерами в коде символа)
Вот наткнулся на интересную задачку: &quot;Написать функцию для сброса в ноль двух битов с заданными номерами в коде символа&quot; ...

Для чего нужны указатели?
Кто может объяснить для чего нужны указатели и смысл их? в интернете одна муть и еще для чего нужно new delete


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru