& (побитовое И) (Transact-SQL)

Выполняет побитовую логическую операцию «И» между двумя целочисленными значениями.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

expression & expression

Аргументы

  • expression
    Любое допустимое выражение любого типа данных из категории числовых типов данных или bit или типов данных binary либо varbinary. expression трактуется как двоичное числовое значение для выполнения побитовой операции.

    ПримечаниеПримечание

    В побитовой операции только одно выражение expression может иметь тип данных либо binary, либо varbinary.

Типы результата

int, если входные значения являются int.

smallint, если входные значения являются smallint.

tinyint, если входные значения являются tinyint илиbit.

Замечания

Побитовый оператор & выполняет побитовую логическую операцию И над соответствующими битами двух выражений. Значение результирующих битов устанавливается равным 1 только в том случае, если оба бита (для текущего разрешаемого бита) в переданных выражениях имеют значение 1; в остальных случаях значение результирующего бита устанавливается равным 0.

Если левое и правое выражения принадлежат к различным целочисленным типам данных (например, левое выражение expression — к типу smallint, а правое выражение expression — к типу int), аргумент более короткого типа данных преобразовывается в более длинный тип данных. В нашем случае аргумент expression типа smallint преобразовывается в тип int.

Примеры

В следующем примере создается таблица с помощью типа данных int для хранения значений, и два значения вставляются в одну строку.

USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_NAME = 'bitwise')
   DROP TABLE bitwise;
GO
CREATE TABLE bitwise
( 
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO

В этом запросе побитовое И выполняется на столбцах a_int_value и b_int_value.

USE tempdb;
GO
SELECT a_int_value & b_int_value
FROM bitwise;
GO

Результирующий набор:

----------- 
10          

(1 row(s) affected)

Двоичное представление числа 170 (a_int_value или A) — 0000 0000 1010 1010. Двоичное представление числа 75 (b_int_value или B) — 0000 0000 0100 1011. Выполнение побитовой операции И в отношении этих двух значений дает двоичный результат 0000 0000 0000 1010, который имеет десятичное значение 10.

(A & B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010

См. также

Справочник

Выражения (Transact-SQL)

Операторы (Transact-SQL)

побитовые операторы (Transact-SQL)

&= (побитовое И РАВНО) (Transact-SQL)

Составные операторы (Transact-SQL)