BrainOverflow
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
1

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

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

Здравствуйте.
Дошел в книге Стенли до битовых операций, но никак не могу понять их предназначение.
Где вообще они используются и как с ними работать? Объясните, если это возможно, на простых примерах.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2016, 17:25
Ответы с готовыми решениями:

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

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

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

Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число
Даны числа x и y. Используя только битовые операции и операции арифметического сложения и...

24
DrOffset
12.02.2016, 20:26     Для чего нужны битовые операции?
  #21

Не по теме:

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

0
GbaLog-
12.02.2016, 20:50
  #22

Не по теме:

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

0
260 / 87 / 30
Регистрация: 29.10.2015
Сообщений: 196
12.02.2016, 21:59 23
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
Эксперт С++
3218 / 1745 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
13.02.2016, 09:54 24
Цитата Сообщение от Sabnik18 Посмотреть сообщение
Дошел в книге Стенли до битовых операций, но никак не могу понять их предназначение.
Где вообще они используются и как с ними работать? Объясните, если это возможно, на простых примерах.
Ну вот в этой теме простой пример как для решения логических задач их можно использовать.
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 7
14.02.2016, 02:18 25
Побитовые операции используется в основном, когда необходимо работать не с числами, а с потоками битов. Различные функции шифрования (которые используются каждым закрытым протоколом).

Различные блоковые, потоковые шифры работают на операции xor, &, |, и циклического смещения влево/вправо.
-----------
З.Ы. Самая любимая операция xor(символ ^ в с/с++): эта операция обратна сама себе, можешь попробовать сам:
https://www.cyberforum.ru/cgi-bin/latex.cgi?m \oplus k\oplus k = m
Где m -- это какое-то сообщение, k -- обычно, называется ключ.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2016, 02:18
Помогаю со студенческими работами здесь

Битовые операции. Написать программу для хранения в битовом поле информации о конфигурации компьютера.
1. Написать программу для хранения в битовом поле информации о конфигурации компьютера. Например:...

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

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

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


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru