Share via


^ (OR exclusivo bit a bit) (Transact-SQL)

Executa uma operação OR exclusiva bit a bit entre dois valores inteiros.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

expression ^ expression

Argumentos

  • expression
    É qualquer expressão válida de qualquer um dos tipos de dados da categoria de tipo de dados inteiro, ou dos tipos de dados bit, binary ou varbinary. expression é tratada como um número binário para a operação bit a bit.

    ObservaçãoObservação

    Apenas uma expression pode ser do tipo de dados binary ou varbinary em uma operação bit a bit.

Tipos de resultado

int se os valores de entrada forem int.

smallint se os valores de entrada forem smallint.

tinyint se os valores de entrada forem tinyint.

Comentários

O operador bit a bit ^ executa um OR exclusivo lógico bit a bit entre as duas expressões, usando cada bit correspondente para as duas expressões. Os bits no resultado são definidos como 1 se um dos dois bits (mas não ambos) para o bit atual a ser resolvido nas expressões de entrada tiver o valor de 1. Se os dois bits forem 0 ou 1, o bit no resultado será limpo com o valor 0.

Se as expressões à esquerda e à direita tiverem tipos de dados inteiros diferentes (por exemplo, a expression à esquerda for smallint e a expression à direita for int), o argumento do tipo de dados menor será convertido no tipo de dados maior. Nesse caso, smallintexpression é convertida em um int.

Exemplos

O exemplo a seguir cria uma tabela usando o tipo de dados int para armazenar os valores originais e insere os dois valores em uma linha.

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 consulta a seguir executa o OR exclusivo bit a bit nas colunas a_int_value e b_int_value.

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

Este é o conjunto de resultados:

----------- 
225         

(1 row(s) affected)

A representação binária de 170 (a_int_value ou A) é 0000 0000 1010 1010. A representação binária de 75 (b_int_value ou B) é 0000 0000 0100 1011. A execução da operação OR exclusivo bit a bit nesses dois valores produz o resultado binário 0000 0000 1110 0001, que é o decimal 225.

(A ^ B)   
         0000 0000 1010 1010
         0000 0000 0100 1011
         -------------------
         0000 0000 1110 0001