~ (NOT bit a bit) (Transact-SQL)
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Instância Gerenciada de SQL do
Azure Azure Synapse Analytics
PDW (Analytics Platform System)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Warehouse no Microsoft Fabric
Executa uma operação lógica NOT bit a bit em um valor inteiro.
Convenções de sintaxe de Transact-SQL
Sintaxe
~ expression
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
Argumentos
expressão
É qualquer expression 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 são int.
smallint se os valores de entrada são smallint.
tinyint se os valores de entrada são tinyint.
bit se os valores de entrada são bit.
Comentários
O operador bit a bit ~ executa uma expressão NOT lógica bit a bit para a expression, usando um bit por vez. Se expression tiver o valor 0, os bits no conjunto de resultados serão definidos como 1; caso contrário, o bit no resultado será limpo com o valor 0. Em outras palavras, uns são alterados para zeros e zeros são alterados para uns.
Importante
Ao executar qualquer tipo de operação bit a bit, o comprimento do armazenamento da expressão usada na operação bit a bit é importante. Recomenda-se usar esse mesmo número de bytes ao armazenar valores. Por exemplo, o armazenamento do valor decimal 5 como tinyint, smallint ou int produz um valor armazenado com diferentes números de bytes: tinyint armazena dados usando 1 byte; smallint armazena dados usando 2 bytes e int armazena dados usando 4 bytes. Portanto, a execução de uma operação bit a bit em um valor decimal int pode produzir resultados diferentes do que o uso de uma conversão binária ou hexadecimal direta, especialmente quando o operador ~ (expressão NOT bit a bit) é usado. A operação NOT bit a bit pode ocorrer em uma variável de um comprimento mais curto. Nesse caso, quando o comprimento mais curto for convertido em uma variável de tipo de dados mais longo, os bits nos 8 bits superiores podem não ser definidos com o valor esperado. Recomenda-se converter a variável de tipo de dados menor no tipo de dados maior e depois executar a operação NOT no resultado.
Exemplos
O exemplo a seguir cria uma tabela usando o tipo de dados int para armazenar os valores e insere os dois valores em uma linha.
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 NOT bit a bit nas colunas a_int_value
e b_int_value
.
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise;
Este é o conjunto de resultados:
--- ---
-171 -76
(1 row(s) affected)
A representação binária de 170 (a_int_value
ou A
) é 0000 0000 0000 0000 0000 0000 1010 1010
. A execução da operação NOT bit a bit nesse valor produz o resultado binário 1111 1111 1111 1111 1111 1111 0101 0101
, que é o decimal -171. A representação binária de 75 é 0000 0000 0000 0000 0000 0000 0100 1011
. A execução da operação NOT bit a bit produz 1111 1111 1111 1111 1111 1111 1011 0100
, que é o decimal -76.
(~A)
0000 0000 0000 0000 0000 0000 1010 1010
---------------------------------------
1111 1111 1111 1111 1111 1111 0101 0101
(~B)
0000 0000 0000 0000 0000 0000 0100 1011
---------------------------------------
1111 1111 1111 1111 1111 1111 1011 0100
Consulte Também
Expressões (Transact-SQL)
Operadores (Transact-SQL)
Operadores bit a bit (Transact-SQL)
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários