Другие языки программирования и технологии
C++ поразрядные операторы
Поразрядные операторы предназначены для тестирования, установки или сдвига реальных битов в байтах или словах, которые соответствуют символьным или целочисленным типам. Эти операторы работают на той же основе, что и их логические эквиваленты.Различия в том, что они работают на побитовой основе. Например, результат применения оператора XOR будет равен значению 1 только в том случае, если истинен лишь один из операндов... и т.д. Так и началась у меня эта тема.До этого подобное не изучал, поэтому ничего не понял.Поясните мне пожалуйста, зачем нужны эти пор. операторы,какой толк от них, какое преимущество у них перед логическими операторами и как в принципе работать с ними в коде?
Нет у них никаких преимуществ или недостатков по сравнению с обычными логическими операциями (слово "оператор" мне тут не нравится, это просто знаки операций, хотя в части учебников называют операции операторами) . Просто они служат разным целям.
Применяются поразрядные операторы, как правило, для работы с аппаратурой - она управляется посылкой в нее и приемом кодов, в которых каждый бит имеет свое значение. А поскольку программирование аппаратной части всяких цифровых устройств и написание драйверов на Pascal приходится делать редко, то и применяются такие операци редко.
В этих операторах переменные, обычно целые, рассматриваются как массивы битов, и операции эти проводятся над битами в байтах или словах (слово - два байта) параллельно. Обычно надо установить, скажем, 3-й бит в 1, а 5-й обнулить (считая с конца и нумеруя биты с 0). Вот и используешь тогда выражение (x or 8) and 223. Тут надо неплохо помнить кодирование в двоичной системе. Ну, можно, скажем, еще для обычных применений проверить число на нечетность не обычной функцией odd, а как x and 1 = 1 - это даст тот же результат.
При чем тут Pascal? На нем учились и писали и программы управления аппаратурой, в те времена Windows не было, была DOS, а в ней с принтерами и прочим часто работали напрямую, скажем, надо было установить жирный шрифт и так далее, посылая в порт принтера определенные комбинации битов.
Применяются поразрядные операторы, как правило, для работы с аппаратурой - она управляется посылкой в нее и приемом кодов, в которых каждый бит имеет свое значение. А поскольку программирование аппаратной части всяких цифровых устройств и написание драйверов на Pascal приходится делать редко, то и применяются такие операци редко.
В этих операторах переменные, обычно целые, рассматриваются как массивы битов, и операции эти проводятся над битами в байтах или словах (слово - два байта) параллельно. Обычно надо установить, скажем, 3-й бит в 1, а 5-й обнулить (считая с конца и нумеруя биты с 0). Вот и используешь тогда выражение (x or 8) and 223. Тут надо неплохо помнить кодирование в двоичной системе. Ну, можно, скажем, еще для обычных применений проверить число на нечетность не обычной функцией odd, а как x and 1 = 1 - это даст тот же результат.
При чем тут Pascal? На нем учились и писали и программы управления аппаратурой, в те времена Windows не было, была DOS, а в ней с принтерами и прочим часто работали напрямую, скажем, надо было установить жирный шрифт и так далее, посылая в порт принтера определенные комбинации битов.
Ilhom Musoev
Например?Для каких целей применяются поразрядные операторы?
Ilhom Musoev
Ясно. Спасибо за инфо...но причем тут паскаль?=)
>>До этого подобное не изучал, поэтому ничего не понял
До этого ты и соску сосать не умел. А как тогда научился?
До этого ты и соску сосать не умел. А как тогда научился?
Ilhom Musoev
Не в этом смысле.Я учусь только по одному учебнику, там не было таких понятий как установка или сдвиг реальных битов в байтах и т.д. Думал, обьяснение пойдет дальше в учебнике, а там уже практика.
они работают так:
сначало число раскладывается в двоичное а потом в зависимости от операции получается результат
например 1001 и 1110 если выполнить логическое "и" то получится что будут сравниваться по одной циферки справа налево 1 и 0 даст 0 1 и 1 даст 1
и в итоге получится третье число на основе этих вычислений
сначало число раскладывается в двоичное а потом в зависимости от операции получается результат
например 1001 и 1110 если выполнить логическое "и" то получится что будут сравниваться по одной циферки справа налево 1 и 0 даст 0 1 и 1 даст 1
и в итоге получится третье число на основе этих вычислений
Похожие вопросы
- даны 3 разл целых числа a,b,c используя оператор GOTO составить программу для ввода чисел в порядке убывания
- C++. В операторе switch нельзя разве использовать case x? а x пробежать в цикле for?
- Зачем в c# нужен оператор ^ (OR)? В чем различие от ||?
- Оператор ввода в C#
- Поразрядные операции c++
- Оператор return в c#.Зачем он нужен?
- C++ кто может по простому объяснить куда и что вовращает оператор RETURN?
- Оператор присваивания C++
- Помогите с переопределением операторов в C++
- Какие есть операторы выбора в C++ ?и как они работают