Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Shegorat

Новый участник


Сообщения: 15
Благодарности: 12

Профиль | Сайт | Отправить PM | Цитировать


Цитата Johny777:
как например та же WinApi функция MessageBox(Ex) обрабатывает входные флаги?
вот например мы отправляем туда флаги := MB_ICONINFORMATION or MB_TASKMODAL or MB_CANCELTRYCONTINUE
or складывает эти значения, если не ошибаюсь. Получается новое. А каким макаром теперь из этого числа выдрать те 3 флага назад?
спрашиваю, потому что не понимаю, но хочу понять, тк поняв смогу использовать ( плагиатъ ) тот же подход для своих процедур/функций значительно укоротив при этом их прототипы »
Нужно сделать побитовое И с нужным флагом, при учете того что значение флага является степенью двойки.
Код: Выделить весь код
 if (Flags and FM_MY_FLAG1) <> 0 then ...
Цитата Johny777:
и просьба: у кого есть мануал, хорошая книга (посоветуйте пожалуйста), где для самых тупых описана побитавая работа с числами (shr shl xor) или момет мне кто тут всё объяснить? »
Логическое И (and) - для каждого бита операндов результат равен 1, если оба бита равны 1, иначе 0
Логическое ИЛИ (or) - для каждого бита операндов результат равен 1, если в одном из битов есть 1, иначе 0
Логическое отрицание (not) - каждый бит операнда инвертируется, если был 1 станет 0 и наоборот.
Логическое исключающее ИЛИ (xor) - для каждого бита операндов результат равен 1, если биты неравны между собой (наборы 0 1, 1 0). Если 2 единицы, то результат 0, также как и при двух нулях.
Логический сдвиг влево (shl) - сдвигает все биты операнда на n разрядов влево, в освободившееся место забиваются нули.
Логический сдвиг вправо (shr) - сдвигает все биты операнда на n разрядов вправо, в освободившееся место забиваются нули.

P.S. Подразумевается работа с двумя операндами.

-------
Как много дел считались невозможными, пока они не были осуществлены.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:32, 17-09-2013 | #1123