^ (OR exclusivo bit a bit) (Transact-SQL)
Executa uma operação OR exclusiva bit a bit entre dois valores inteiros.
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çã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