Побитовые операторы, поддерживаемые языком D, перечислены в следующей таблице. Предположим, что переменная A содержит значение 60, а переменная B равна 13, тогда:
Оператор | Описание | Пример |
---|---|---|
& | Бинарный оператор И копирует бит в результат, если он существует в обоих операндах. | (A & B) даст 12, или двоичное 0000 1100. |
| | Бинарный оператор ИЛИ копирует бит, если он существует в любом из операндов. | (A | B) даст 61, или двоичное 0011 1101. |
^ | Бинарный оператор Исключающее ИЛИ копирует бит, если он установлен в одном из операндов, но не в обоих. | (A ^ B) даст 49, или двоичное 0011 0001 |
~ | Оператор Дополнения является унарным и имеет эффект «переворачивания» бит. | (~A ) даст -61, или двоичное 1100 0011 в форме дополнения двойки. |
<< | Бинарный оператор Сдвига влево. Значение левого операнда перемещается влево на количество бит, заданное правым операндом. | A << 2 даст 240, или двоичное 1111 0000 |
>> | Бинарный оператор Сдвига вправо. Значение левого операнда перемещается вправо на количество бит, заданное правым операндом. | A >> 2 даст 15, или двоичное 0000 1111. |
Попробуйте следующий пример, для понимания всех побитовых операторов, доступных в языке программирования D:
import std.stdio; int main(string[] args) { uint a = 60; /* 60 = 0011 1100 */ uint b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ writefln("Строка 1 - Значение c равно %d", c ); c = a | b; /* 61 = 0011 1101 */ writefln("Строка 2 - Значение c равно %d", c ); c = a ^ b; /* 49 = 0011 0001 */ writefln("Строка 3 - Значение c равно %d", c ); c = ~a; /*-61 = 1100 0011 */ writefln("Строка 4 - Значение c равно %d", c ); c = a << 2; /* 240 = 1111 0000 */ writefln("Строка 5 - Значение c равно %d", c ); c = a >> 2; /* 15 = 0000 1111 */ writefln("Строка 6 - Значение c равно %d", c ); return 0; }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Строка 1 - Значение c равно 12 Строка 2 - Значение c равно 61 Строка 3 - Значение c равно 49 Строка 4 - Значение c равно -61 Строка 5 - Значение c равно 240 Строка 6 - Значение c равно 15