Побитовые операторы в D


Предыдущая страница

Побитовые операторы, поддерживаемые языком 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

Предыдущая страница
d_programming_operators.htm