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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Мне совершенно не ясно, как устанавливать/сбрасывать бит по его номеру(Читал об этом и в книге и в интернете. Скорее всего, я совсем тупой). Объясните, пожалуйста, почему(как) работают эти записи:
C++
1
BitField |= (1 << i); //Установить бит
C++
1
BitField &= ~(1 << i); //Сбросить бит
C++
1
return BitField &= (1 << i); //Получить значение бита
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2016, 19:54
Ответы с готовыми решениями:

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

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

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

2
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
20.04.2016, 20:07
Цитата Сообщение от Гайфи Посмотреть сообщение
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  [ТС]
Hikari, Спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2016, 20:11
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru