Поразрядные операции
Поразрядные операции также проводятся только над разрядами целочисленных операндов:
&: поразрядная конъюнкция (операция И или поразрядное умножение). Возвращает 1, если оба из соответствующих разрядов обоих чисел равны 1
|: поразрядная дизъюнкция (операция ИЛИ или поразрядное сложение). Возвращает 1, если хотя бы один из соответствующих разрядов обоих чисел равен 1
^: поразрядное исключающее ИЛИ. Возвращает 1, если только один из соответствующих разрядов обоих чисел равен 1
~: поразрядное отрицание. Инвертирует все разряды операнда. Если разряд равен 1, то он становится равен 0, а если он равен 0, то он получает значение 1.
===============
Логические операторы: «И», «ИЛИ» и «НЕ»:
AND (&&). Возвращает истину, только если оба операнда ненулевые. В противном случае он возвращает ложь (0).
OR (||). Если любой из двух операндов ненулевой, то условие становится истинным.
NOT (!). Используется для преобразования в обратное логическое состояние своего операнда. Если условие истинно, то оператор NOT сделает его ложным, и наоборот.
===========
Чувствую, что ! меня смущает в соседстве с & и |
Смотреть детально по битно ...
Если нужно именно побитно, а не логически???
0000000000000000 - 0000- ENABLED
0000000000000010 - 0002- DISABLED
0000000000000001 - 0001- GRAYED
0000000000000000 - 0000- STRING
0000000000000100 - 0004- BITMAP
0000000100000000 - 0256- OWNERDRAW
0000000000000000 - 0000- UNCHECKED
0000000000001000 - 0008- CHECKED
0000000000000000 - 0000- UNHILITE
0000000010000000 - 0128- HILITE
Код:
Debug RSet(Bin(#MF_ENABLED ), 16, "0") + " - " + RSet(Str(#MF_ENABLED ), 4, "0") + "- ENABLED"
Debug RSet(Bin(#MF_DISABLED ), 16, "0") + " - " + RSet(Str(#MF_DISABLED ), 4, "0") + "- DISABLED"
Debug RSet(Bin(#MF_GRAYED ), 16, "0") + " - " + RSet(Str(#MF_GRAYED ), 4, "0") + "- GRAYED"
Debug RSet(Bin(#MF_STRING ), 16, "0") + " - " + RSet(Str(#MF_STRING ), 4, "0") + "- STRING"
Debug RSet(Bin(#MF_BITMAP ), 16, "0") + " - " + RSet(Str(#MF_BITMAP ), 4, "0") + "- BITMAP"
Debug RSet(Bin(#MF_OWNERDRAW ), 16, "0") + " - " + RSet(Str(#MF_OWNERDRAW ), 4, "0") + "- OWNERDRAW"
Debug RSet(Bin(#MF_UNCHECKED ), 16, "0") + " - " + RSet(Str(#MF_UNCHECKED ), 4, "0") + "- UNCHECKED"
Debug RSet(Bin(#MF_CHECKED ), 16, "0") + " - " + RSet(Str(#MF_CHECKED ), 4, "0") + "- CHECKED"
Debug RSet(Bin(#MF_UNHILITE ), 16, "0") + " - " + RSet(Str(#MF_UNHILITE ), 4, "0") + "- UNHILITE"
Debug RSet(Bin(#MF_HILITE ), 16, "0") + " - " + RSet(Str(#MF_HILITE ), 4, "0") + "- HILITE"
Отредактировано useful (24.04.2025 14:33:03)