Другие языки программирования и технологии

C++ поразрядные операторы

Поразрядные операторы предназначены для тестирования, установки или сдвига реальных битов в байтах или словах, которые соответствуют символьным или целочисленным типам. Эти операторы работают на той же основе, что и их логические эквиваленты.Различия в том, что они работают на побитовой основе. Например, результат применения оператора XOR будет равен значению 1 только в том случае, если истинен лишь один из операндов... и т.д. Так и началась у меня эта тема.До этого подобное не изучал, поэтому ничего не понял.Поясните мне пожалуйста, зачем нужны эти пор. операторы,какой толк от них, какое преимущество у них перед логическими операторами и как в принципе работать с ними в коде?
IM
Ilhom Musoev
4 786
Нет у них никаких преимуществ или недостатков по сравнению с обычными логическими операциями (слово "оператор" мне тут не нравится, это просто знаки операций, хотя в части учебников называют операции операторами) . Просто они служат разным целям.
Применяются поразрядные операторы, как правило, для работы с аппаратурой - она управляется посылкой в нее и приемом кодов, в которых каждый бит имеет свое значение. А поскольку программирование аппаратной части всяких цифровых устройств и написание драйверов на Pascal приходится делать редко, то и применяются такие операци редко.
В этих операторах переменные, обычно целые, рассматриваются как массивы битов, и операции эти проводятся над битами в байтах или словах (слово - два байта) параллельно. Обычно надо установить, скажем, 3-й бит в 1, а 5-й обнулить (считая с конца и нумеруя биты с 0). Вот и используешь тогда выражение (x or 8) and 223. Тут надо неплохо помнить кодирование в двоичной системе. Ну, можно, скажем, еще для обычных применений проверить число на нечетность не обычной функцией odd, а как x and 1 = 1 - это даст тот же результат.
При чем тут Pascal? На нем учились и писали и программы управления аппаратурой, в те времена Windows не было, была DOS, а в ней с принтерами и прочим часто работали напрямую, скажем, надо было установить жирный шрифт и так далее, посылая в порт принтера определенные комбинации битов.
Саша Заблоцкий
Саша Заблоцкий
81 855
Лучший ответ
Ilhom Musoev Например?Для каких целей применяются поразрядные операторы?
Ilhom Musoev Ясно. Спасибо за инфо...но причем тут паскаль?=)
>>До этого подобное не изучал, поэтому ничего не понял
До этого ты и соску сосать не умел. А как тогда научился?
Ilhom Musoev Не в этом смысле.Я учусь только по одному учебнику, там не было таких понятий как установка или сдвиг реальных битов в байтах и т.д. Думал, обьяснение пойдет дальше в учебнике, а там уже практика.
они работают так:
сначало число раскладывается в двоичное а потом в зависимости от операции получается результат
например 1001 и 1110 если выполнить логическое "и" то получится что будут сравниваться по одной циферки справа налево 1 и 0 даст 0 1 и 1 даст 1
и в итоге получится третье число на основе этих вычислений