Разделы
- 1. Введение
- 2. Описание языка
- 3. Интерфейс программирования приложений (API)
- 3.1. Стек
- 3.2. Резервация памяти
- 3.3. Сообщения
- 3.4. Типы данных
- 3.5. Функции
- 3.5.1. Базовые функции скриптоввой системы
- 3.5.2. Функции для вставки на вершину стека значения
- 3.5.3. Перевод значений со стека в скриптовую ситему (экспорт (stack => script))
- 3.5.4. Функции для получения со стека (stack => C(++))
- 3.5.5. Функции для работы с аргументами в вызванной C(++) функции из скриптовой системы (script => C(++) function)
- 3.5.6. Функции отладки (DEBUG)
- 3.5.7. Функции для работы с препроцессом
- 4. Стандартная библиотека
2.4.5. Побитовые операторы
Побитовые операторы позволяют считывать и устанавливать конкретные биты целых чисел.
Побитовые операторы
Пример | Название | Результат |
---|---|---|
a & b | И | Устанавливаются только те биты, которые установлены и в a, и в b. |
a | b | Или | Устанавливаются те биты, которые установлены в a или в b. |
a ^ b | Исключающее или | Устанавливаются только те биты, которые установлены либо только в a, либо только в b, но не в обоих одновременно. |
~a | Отрицание | Устанавливаются те биты, которые не установлены в a, и наоборот. |
a << b | Сдвиг влево | Все биты переменной a сдвигаются на b позиций влево (каждая позиция подразумевает "умножение на 2") |
a >> b | Сдвиг вправо | Все биты переменной a сдвигаются на b позиций вправо (каждая позиция подразумевает "деление на 2") |
Побитовый сдвиг в s4g - это арифметическая операция. Биты, сдвинутые за границы числа, отбрасываются. Сдвиг влево дополняет число нулями справа, сдвигая в то же время знаковый бит числа влево, что означает что знак операнда не сохраняется. Сдвиг вправо сохраняет копию сдвинутого знакового бита слева, что означает что знак операнда сохраняется.
Используйте скобки для обеспечения необходимого приоритета операторов. Например, a & b == true
сначала проверяет на равенство, а потом выполняет побитовое и; тогда как (a & b) == true
сначала выполняет побитовое и, а потом выполняет проверку на равенство.
Оба операнда и результат выполнения <<
и >>
всегда считаются за целое.