русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Поразрядные операторы


Дата добавления: 2015-07-09; просмотров: 530; Нарушение авторских прав


 

Несмотря на то, что все числа в JavaScript вещественные, поразрядные операторы требуют в качестве операндов целые числа. Они работают с такими операндами с помощью 32_разрядного целого представления, а не эквивалентного представле_ ния с плавающей точкой. Четыре из этих операторов выполняют поразрядные операции булевой алгебры, аналогично описанным ранее логическим операторам, но рассматривая каждый бит операнда как отдельное логическое значение. Три других поразрядных оператора применяются для сдвига битов влево и вправо.

 

Если операнды не являются целыми числами или слишком велики и не помеща_ ются в 32_разрядное целое, поразрядные операторы просто «втискивают» опе_ ранды в 32_разрядное целое, отбрасывая дробную часть операнда и любые биты старше 32_го. Операторы сдвига требуют, чтобы значение правого операнда было целым числом от 0 до 31. После преобразования этого операнда в 32_разрядное целое вышеописанным образом они отбрасывают любые биты старше 5_го, полу_ чая число в соответствующем диапазоне.

 

Те, кто не знаком с двоичными числами и двоичным представлением десятич_ ных целых чисел, могут пропустить операторы, рассматриваемые в этом разде_ ле. Они требуются для низкоуровневых манипуляций с двоичными числами и достаточно редко применяются при программировании на JavaScript. Далее приводится список поразрядных операторов:

Поразрядное И (&)

 

Оператор & выполняет операцию «логическое И» над каждым битом своих операндов. Бит результата будет равен 1, только если равны 1 соответствую_ щие биты обоих операндов. То есть выражение 0x1234 & 0x00FF даст в результа_ те число 0x0034.

Поразрядное ИЛИ (|)

 

Оператор | выполняет операцию «логическое ИЛИ» над каждым битом своих операндов. Бит результата будет равен 1, если равен 1 соответствующий бит хотя бы в одном операнде. Например, 9 | 10 равно 11.



Поразрядное исключающее ИЛИ (^)

 

Оператор ^ выполняет логическую операцию «исключающее ИЛИ» над каж_ дым битом своих операндов. Исключающее ИЛИ обозначает, что должен быть истинен либо первый операнд, либо второй, но не оба сразу. Бит резуль_ тата устанавливается, если соответствующий бит установлен в одном (но не в обоих) из двух операндов. Например, 9 ^ 10 равно 3.


 

92 Глава 5. Выражения и операторы

Поразрядное НЕ (~)

 

Оператор ~ представляет собой унарный оператор, указываемый перед своим единственным целым аргументом. Он выполняет инверсию всех битов опе_ ранда. Из_за способа представления целых со знаком в JavaScript применение оператора ~ к значению эквивалентно изменению его знака и вычитанию 1. Например, ~0x0f равно 0xfffffff0, или _16.

Сдвиг влево (<<)

 

Оператор << сдвигает все биты в первом операнде влево на количество пози_ ций, указанное во втором операнде, который должен быть целым числом в диапазоне от 0 до 31. Например, в операции a << 1 первый бит в a становится вторым битом, второй бит становится третьим и т. д. Новым первым битом становится ноль, значение 32_го бита теряется. Сдвиг значения влево на одну позицию эквивалентен умножению на 2, на две позиции – умножению на 4, и т. д. Например, 7 << 1 равно 14.

Сдвиг вправо с сохранением знака (>>)

 

Оператор >> перемещает все биты своего первого операнда вправо на количе_ ство позиций, указанное во втором операнде (целое между 0 и 31). Биты, сдвинутые за правый край, теряются. Самый старший бит (32_й) не меняется, чтобы сохранить знак результата. Если первый операнд положителен, стар_ шие биты результата заполняются нулями; если первый операнд отрицате_ лен, старшие биты результата заполняются единицами. Сдвиг значения вправо на одну позицию эквивалентен делению на 2 (с отбрасыванием остат_ ка), а сдвиг вправо на две позиции эквивалентен делению на 4 и т. д. Напри_ мер, 7 >> 1 равно 3, а _7 >> 1 равно _4.

Сдвиг вправо с заполнением нулями (>>>)

 

Оператор >>> аналогичен оператору >> за исключением того, что при сдвиге старшие разряды заполняются нулями независимо от знака первого операн_ да. Например, _1 >> 4 равно _1, а _1 >>> 4 равно 268435455 (0x0fffffff).

 



<== предыдущая лекция | следующая лекция ==>
 | Операторы присваивания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.13 сек.