С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/103: Рейтинг темы: голосов - 103, средняя оценка - 4.67
21 / 13 / 7
Регистрация: 17.10.2015
Сообщений: 126
1

Установка и сброс битов

20.04.2016, 19:54. Показов 18926. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Мне совершенно не ясно, как устанавливать/сбрасывать бит по его номеру(Читал об этом и в книге и в интернете. Скорее всего, я совсем тупой). Объясните, пожалуйста, почему(как) работают эти записи:
C++
1
BitField |= (1 << i); //Установить бит
C++
1
BitField &= ~(1 << i); //Сбросить бит
C++
1
return BitField &= (1 << i); //Получить значение бита
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2016, 19:54
Ответы с готовыми решениями:

Сброс битов
Вот такое условие. &quot;Если в числе x установлен бит n и установлен бит m, то в числе y сбросить биты...

Установка битов
Установка битов Для этого надо сложить операцией «ИЛИ» x с маской, у которой единицы в...

Из двух целых чисел А и B собрать одно, состоящее из четных битов A и нечетных битов B...
Нужна помощь с задачей. Из двух целых чисел А и B собрать одно, состоящее из четных битов A и...

Перевод таблицы битов и времени в последовательность битов arduino
доброго времени суток в приведенной ниже таблице левый столбец - биты, правый - их длительность....

2
Хитрая блондиночка $)
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
20.04.2016, 20:07 2
Цитата Сообщение от Гайфи Посмотреть сообщение
BitField |= (1 << i); //Установить бит
Берется число 1 (у которого установлен бит номер 1). Сдвигается на i позиций влево (бит, что был установлен оказывается установлен левее, куда его сдвинули), и оператором |= (логическое ИЛИ) назначается переменной.
Например:
число 10101 в бинарном виде.
Пусть i=3. Сдвиг дает 01000. Далее 10101+01000=11101. Сдвинутый бит "вливается" в число, подменяя собой нулик в такой же как и он позиции.
Значит
Цитата Сообщение от Гайфи Посмотреть сообщение
BitField &= ~(1 << i); //Сбросить бит
Тут обратное: Сдвигается единица на нужною позицию (01000), инвертируется вся конструкция (10111), дабы создать с помошью нуля "пустое место", которое логическим И (&=) вытеснит в эту "пустоту" бит из исходного числа:
11101 & 10111 = 10101. Все единицы останутся на своих местах, ибо их некуда вытеснять, а вот та единица, на позиции которой в сдвинутом числе окажется ноль - выпадет из исходного числа.

Надеюсь не витеевато описала
3
21 / 13 / 7
Регистрация: 17.10.2015
Сообщений: 126
20.04.2016, 20:11  [ТС] 3
Hikari, Спасибо большое
0
20.04.2016, 20:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2016, 20:11
Помогаю со студенческими работами здесь

Установка и сброс битов
Мaсcив из 6 бaйт. Установить в каждом бaйте 3-ий бит в 1, 4-ый бит в 0, 7-ой в 0. Написала...

Установка конкретных битов в байте
Привет народ! Необходимо в байт записывать конкретные биты. Причем данные еще разбиты на 4 кадра....

Установка отдельных битов в РВВ
Добрый день! Подскажите пожалуйста, как устанавливать отдельные биты в регистре ADMUX? Нужно в...

Установка нескольких битов в булевом массиве
Здравствуйте, в основном имел дело с программированием промышленных контроллеров, поэтому с C# имею...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru