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-13 09:08:00) [1]

> а "раскрутить" можете - что за маски страшные такие?)

Правильный вопрос другой:

почему не произойдет побайтного сложения,
если просто сложить dwA+dwB?


Anatoly Podgoretsky   (2010-07-13 08:47:00) [2]

> Германн  (13.07.2010 02:45:25)  [25]

Маски это просто. Это всего лишь набор бит, где 0 маскирует бит


Германн   (2010-07-13 02:45:00) [3]


> И ни на кого я не клеветал, хватит меня обвинять.

Делать мне более нечего, кроме как обвинять кого-то кого я не знаю.
Но
> Как получилось, так и задал.

Плохо получилось. Но это не беда.

> а "раскрутить" можете - что за маски страшные такие?

Можно и "раскрутить". Но тогда не интересно будет. Кому интересно разъяснение фокуса?


Виталий   (2010-07-13 01:26:00) [4]


> ((dwA xor dwB) and $80808080) xor ((dwA and $7F7F7F7F) +
> (dwB and $7F7F7F7F));

а "раскрутить" можете - что за маски страшные такие?)


Демо   (2010-07-13 00:43:00) [5]


> dwAB:= ((dwA xor dwB) and $80808080) xor ((dwA and $7F7F7F7F)
> + (dwB and $7F7F7F7F));


Жуть.


han_malign   (2010-07-12 18:03:00) [6]

до кучи, зарядка для ума - побайтовое сложение, по модулю 256:
dwAB:= ((dwA xor dwB) and $80808080) xor ((dwA and $7F7F7F7F) + (dwB and $7F7F7F7F));


han_malign   (2010-07-12 17:49:00) [7]

highNbitsMask:= not(LongWord(-1) shr N); //or Word, or Byte
lowMbitsMask:=  not(LongWord(-1) shl M);
middleBitsMask:= highNbitsMask and lowNbitsMask; //N+M > sizeof(TTargetType)*8


Виталий   (2010-07-12 10:06:00) [8]


> Да. Но как задал?

Как получилось, так и задал. Не понимаю сути ваших обвинений. Или это такой толстый троллинг?
Теперь, однако, я для себя этот момент уяснил. И ни на кого я не клеветал, хватит меня обвинять.


Sha   (2010-07-12 09:17:00) [9]

>> Тема сдвига масок не раскрыта

> Бо такой темы в природе не существует,

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


Германн   (2010-07-12 01:32:00) [10]


> Тема сдвига масок не раскрыта

Бо такой темы в природе не существует, если речь идет об установке бита/битов.
Просто в неизвестно откуда взявшемся примере "установки бита" фигурирует совершенно неестественная для реальных задач функция
function SetBit(Src: Integer; bit: Integer): Integer;
begin
 Result := Src or (1 shl Bit);
end;

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


Sha   (2010-07-11 22:42:00) [11]

Тема сдвига масок не раскрыта.


Германн   (2010-07-11 22:21:00) [12]


> Я лишь задал вопрос.

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


Виталий   (2010-07-11 21:56:00) [13]


> В том что из урока ты вывел, что операции сдвига являются
> главным способом установки бит в числе

ничего подобного я не выводил. Я лишь задал вопрос.


Anatoly Podgoretsky   (2010-07-11 10:27:00) [14]

> Германн  (11.07.2010 03:33:13)  [13]

Это да, ведь оно не у меня записано.


Германн   (2010-07-11 03:33:00) [15]


> Anatoly Podgoretsky ©   (10.07.10 10:55) [10]
>
> > Германн  (10.07.2010 01:50:09)  [9]
>
> Так я лицей не редактирую и вообще не возвращаюсь к старым
> задач, какие бы
> там не были ошибки. А оповещение я получил по почте.
>

Дык я и не просил (тем более не требовал) что-то изменить.
Надеюсь моё замечание кому-то поможет. Оно ведь там записано.


Германн   (2010-07-11 02:09:00) [16]


> Не понял Вас, в чем я клевещу. Что не так?

В том что из урока ты вывел, что операции сдвига являются главным способом установки битв числе! И попросил способ "именно через сдвиговые операции, а не просто маской вроде t := t or mask"
А урок говорит, что главным способом является логическая операция ИЛИ.


Виталий   (2010-07-10 12:39:00) [17]


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

Спасибо, Капитан. Просто под словом mask я для простоты имел ввиду отличие маски типа 11000000 от 0000010, то есть когда установленых бит явно больше одного.

> И кстати не надо клеветать на уроки АП на Королевстве.

Не понял Вас, в чем я клевещу. Что не так?


Anatoly Podgoretsky   (2010-07-10 10:55:00) [18]

> Германн  (10.07.2010 01:50:09)  [9]

Так я лицей не редактирую и вообще не возвращаюсь к старым задач, какие бы
там не были ошибки. А оповещение я получил по почте.


Германн   (2010-07-10 01:50:00) [19]


> Anatoly Podgoretsky ©   (09.07.10 11:56) [3]

Послал в лицей своё замечание по этому вопросу.


Германн   (2010-07-10 00:42:00) [20]


> Виталий ©   (09.07.10 10:46)
>
> Из уроков на "Королевстве Дельфи"  знаю, что установить
> бит числа - это
> t := t or (1 shl N), где N - номер бита

И кстати не надо клеветать на уроки АП на Королевстве.
Там четко написано:
"Установка бита

Для установки отдельного бита или группы битов используется операция ИЛИ"


Страницы:   1 2

Наверх

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