Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Установить группу битов числа


Страницы:   1 2

Виталий ©   (2010-07-09 10:46:00) 

Из уроков на "Королевстве Дельфи"  знаю, что установить бит числа - это
t := t or (1 shl N), где N - номер бита
А как установить группубитов, например, 4 старших? Интересно именно через сдвиговые операции, а не просто маской вроде t := t or mask


Sha   (2010-07-10 00:33:00) [21]

> Виталий
> Интересно именно через сдвиговые операции,
> а не просто маской вроде t := t or mask

При помощи сдвига значения переменной невозможно установить бит,
не затронув другие биты. Они при сдвиге могут измениться.

Поэтому при помощи сдвигов и других операций формируют маску,
а затем ее OR'ят со значением переменной. Это гарантированно
устанавливает бит(ы) переменной независимо от ее прежнего значения.

Твой пример
t := t or (1 shl N);
эквивалентен
mask := (1 shl N);
t := t or mask;


Об этом тебе и писали
Плохиш ©   (09.07.10 10:50) [1]
Anatoly Podgoretsky ©   (09.07.10 11:56) [3]


Виталий   (2010-07-09 21:30:00) [22]

Можете указать, в каком месте я написал бред?


Плохиш   (2010-07-09 12:48:00) [23]


> Виталий ©   (09.07.10 12:26) [4]


> Бред же.

Действительно, и зачем ты бред пишешь?


Виталий   (2010-07-09 12:26:00) [24]


> Мая плякать...
>
> PS. mask = (1 shl N)

Бред же. Внимательно прочтите, о чем я.
Анатолий, ясно, спасибо. Ваш урок, кстати, по-моему :)


Anatoly Podgoretsky   (2010-07-09 11:56:00) [25]

А кроме OR MASK других вариантов не существует. Маску можно собирать из любого количества бит/флагов
(1 shl N1) + (1 shl N2), это не требует никакой вычислительной мощности.


Плохиш   (2010-07-09 10:51:00) [26]


> t := t or ($f shl N), где N - номер младшего бита


Плохиш   (2010-07-09 10:50:00) [27]


> t := t or (1 shl N)


> а не просто маской вроде t := t or mask

Мая плякать...

PS. mask = (1 shl N)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо