1. Как установить в единицу нужный(ые) бит(ы) в переменной, не меняя остальные?
Автор ARV   
18.12.2009 г.

Установка бита осуществляется при помощи двоичного ИЛИ этой переменной и числом, в котором установлен нужный бит. Например:

var = var | 0x40; // установка 6-го бита в 1.

Проще всего получить число с установленным нужным битом при помощи операции логического сдвига:

var = var | (1<<6);

В WinAVR предусмотрен макрос _BV(x), который создает число с установленным в 1 битом x. Для любителей других компиляторов этот макрос (для совместимости) можно добавить самостоятельно:

#define _BV(x) (1<<(x))

С его использованием операция установки 6-го бита переменной var запишется так:

var = var | _BV(6);

Или более кратко (в общепринятом стиле Си):

var |= _BV(6);

Одновременная установка нескольких бит в переменной осуществляется аналогично:

var |= _BV(6) | _BV(5); // установка 5-го и 6-го битов

Добавить в любимые (1) | Просмотров: 17485

  Коментарии (1)
 1 Написал(а) Максим Геннадьевич, в 07:15 24.12.2009
Думаю теперь вопросов будет меньше ;-)

Только зарегистрированные пользователи могут оставлять коментарии.
Пожалуйста зарегистрируйтесь или войдите в ваш аккаунт.