~ (NOT exclusif au niveau du bit) (Transact-SQL)~ (Bitwise NOT) (Transact-SQL)

S’APPLIQUE À : OuiSQL Server OuiAzure SQL Database OuiAzure Synapse Analytics (SQL DW) OuiParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database YesAzure Synapse Analytics (SQL DW) YesParallel Data Warehouse

Exécute une opération logique NOT au niveau du bit sur une valeur entière.Performs a bitwise logical NOT operation on an integer value.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

~ expression  

ArgumentsArguments

expressionexpression
Toute expression valide de tout type de données de la catégorie entier, ou de type bit, binary ou varbinary.Is any valid expression of any one of the data types of the integer data type category, the bit, or the binary or varbinary data types. L’expression est traitée comme un nombre binaire pour l’opération au niveau du bit.expression is treated as a binary number for the bitwise operation.

Notes

Une seule expression peut être de type binary ou varbinary dans une opération au niveau du bit.Only one expression can be of either binary or varbinary data type in a bitwise operation.

Types des résultatsResult Types

int si les valeurs d’entrée sont int.int if the input values are int.

smallint si les valeurs d’entrée sont smallint.smallint if the input values are smallint.

tinyint si les valeurs d’entrée sont tinyint.tinyint if the input values are tinyint.

bit si les valeurs d’entrée sont bit.bit if the input values are bit.

NotesRemarks

L’opérateur au niveau du bit ~ exécute une opération NOT logique au niveau du bit sur cette expression, en évaluant chaque bit.The ~ bitwise operator performs a bitwise logical NOT for the expression, taking each bit in turn. Si l’expression a la valeur 0, les bits du jeu de résultats prennent la valeur 1 ; sinon, le bit résultant est mis à 0.If expression has a value of 0, the bits in the result set are set to 1; otherwise, the bit in the result is cleared to a value of 0. En d'autres termes, les uns sont changés en zéros et les zéros sont changés en uns.In other words, ones are changed to zeros and zeros are changed to ones.

Important

Quelle que soit l'opération au niveau du bit que vous effectuez, la longueur d'enregistrement de l'expression sur laquelle porte l'opération est importante.When you perform any kind of bitwise operation, the storage length of the expression used in the bitwise operation is important. Il est recommandé d'utiliser le même nombre d'octets lors du stockage des valeurs.We recommend that you use this same number of bytes when storing values. Par exemple, le stockage de la valeur décimale 5 en tant que tinyint, smallint ou int produit une valeur stockée avec des nombres d’octets différents : tinyint stocke les données sur un 1 octet, smallint sur 2 octets et int sur 4 octets.For example, storing the decimal value of 5 as a tinyint, smallint, or int produces a value stored with different numbers of bytes: tinyint stores data using 1 byte; smallint stores data using 2 bytes, and int stores data using 4 bytes. En conséquence, l’exécution d’une opération au niveau du bit sur une valeur décimale int peut produire des résultats différents de ceux de la même opération sur la même valeur traduite directement en binaire ou en hexadécimal, en particulier avec l’opérateur ~ (NOT au niveau du bit).Therefore, performing a bitwise operation on an int decimal value can produce different results from those using a direct binary or hexadecimal translation, especially when the ~ (bitwise NOT) operator is used. L'opération NOT au niveau du bit peut se produire sur une variable plus courte.The bitwise NOT operation may occur on a variable of a shorter length. Dans ce cas, lorsque la variable plus courte est convertie en un type de données plus long, les bits des 8 bits de gauche risquent d'avoir une valeur imprévue.In this case, when the shorter length is converted to a longer data type variable, the bits in the upper 8 bits may not be set to the expected value. Nous vous recommandons de convertir d'abord la variable de type de données courte dans le type de données plus long, et d'exécuter ensuite l'opération NOT sur le résultat.We recommend that you convert the smaller data type variable to the larger data type, and then perform the NOT operation on the result.

ExemplesExamples

Cet exemple crée une table en utilisant le type de données int pour stocker les valeurs et insère les deux valeurs dans une ligne.The following example creates a table using the int data type to store the values and inserts the two values into one row.

CREATE TABLE bitwise  
(   
a_int_value int NOT NULL,  
b_int_value int NOT NULL  
);  
GO  
INSERT bitwise VALUES (170, 75);  
GO  

La requête suivante exécute l'opération NOT au niveau du bit sur les colonnes a_int_value et b_int_value.The following query performs the bitwise NOT on the a_int_value and b_int_value columns.

SELECT ~ a_int_value, ~ b_int_value  
FROM bitwise;  

Voici l'ensemble de résultats obtenu :Here is the result set:

--- ---   
-171  -76   
  
(1 row(s) affected)  

La représentation binaire de 170 (a_int_value ou A) est 0000 0000 1010 1010.The binary representation of 170 (a_int_value or A) is 0000 0000 1010 1010. L'exécution de l'opération NOT au niveau du bit sur cette valeur produit le résultat binaire 1111 1111 0101 0101, qui est la valeur décimale -171.Performing the bitwise NOT operation on this value produces the binary result 1111 1111 0101 0101, which is decimal -171. La représentation binaire pour 75 est 0000 0000 0100 1011.The binary representation for 75 is 0000 0000 0100 1011. L'exécution de l'opération NOT au niveau du bit produit 1111 1111 1011 0100, qui est -76 en notation décimale.Performing the bitwise NOT operation produces 1111 1111 1011 0100, which is decimal -76.

 (~A)     
         0000 0000 1010 1010  
         -------------------  
         1111 1111 0101 0101  
(~B)     
         0000 0000 0100 1011  
         -------------------  
         1111 1111 1011 0100  

Voir aussiSee Also

Expressions (Transact-SQL) Expressions (Transact-SQL)
Opérateurs (Transact-SQL) Operators (Transact-SQL)
Opérateurs au niveau du bit (Transact-SQL)Bitwise Operators (Transact-SQL)