Delen via


~ (Bitwise NOT) (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Voert een bitsgewijze logische NOT-bewerking uit op een geheel getal.

Transact-SQL syntaxis-conventies

Syntax

~ expression  

Arguments

expression
Is een geldige expressie van een van de gegevenstypen van de categorie geheel getal, de bit of de binaire of varbinaire gegevenstypen. expressie wordt behandeld als een binair getal voor de bitsgewijze bewerking.

Note

Slechts één expressie kan van het binaire of varbinaire gegevenstype zijn in een bitsgewijze bewerking.

Result Types

int als de invoerwaarden int zijn.

smallint als de invoerwaarden klein zijn.

kleineint als de invoerwaarden klein zijn.

bit als de invoerwaarden bit zijn.

Remarks

De ~ bitsgewijze operator voert een bitsgewijze logische NOT voor de expressie uit, waarbij elke bit op zijn beurt wordt gebruikt. Als de expressie een waarde van 0 heeft, worden de bits in de resultatenset ingesteld op 1; anders wordt de bit in het resultaat gewist tot een waarde van 0. Met andere woorden, degenen worden gewijzigd in nullen en nullen worden gewijzigd in nullen.

Important

Wanneer u een willekeurige bitwise bewerking uitvoert, is de opslaglengte van de expressie die in de bitsgewijze bewerking wordt gebruikt, belangrijk. U wordt aangeraden hetzelfde aantal bytes te gebruiken bij het opslaan van waarden. Als u bijvoorbeeld decimaalwaarde van 5 opslaat als een kleineint, kleineint of int , wordt een waarde geproduceerd die is opgeslagen met verschillende getallen van bytes: tinyint slaat gegevens op met behulp van 1 byte; smallint slaat gegevens op met 2 bytes en int slaat gegevens op met 4 bytes. Daarom kan het uitvoeren van een bitsgewijze bewerking op een int decimale waarde verschillende resultaten opleveren van die met behulp van een directe binaire of hexadecimale vertaling, met name wanneer de ~ operator (bitwise NOT) wordt gebruikt. De bitwise NOT-bewerking kan optreden op een variabele van een kortere lengte. In dit geval, wanneer de kortere lengte wordt geconverteerd naar een langere gegevenstypevariabele, worden de bits in de bovenste 8 bits mogelijk niet ingesteld op de verwachte waarde. U wordt aangeraden de kleinere gegevenstypevariabele te converteren naar het grotere gegevenstype en vervolgens de BEWERKING NOT uit te voeren op het resultaat.

Examples

In het volgende voorbeeld wordt een tabel gemaakt met behulp van het int-gegevenstype om de waarden op te slaan en de twee waarden in één rij in te voegen.

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

Met de volgende query wordt de bitsgewijze NOT op de a_int_value en b_int_value kolommen uitgevoerd.

SELECT ~ a_int_value, ~ b_int_value  
FROM bitwise;  

Dit is de resultatenset:

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

De binaire weergave van 170 (a_int_value of A) is 0000 0000 0000 0000 0000 0000 1010 1010. Het uitvoeren van de bitsgewijze NOT-bewerking op deze waarde produceert het binaire resultaat 1111 1111 1111 1111 1111 1111 0101 0101, dat decimaal -171 is. De binaire weergave voor 75 is 0000 0000 0000 0000 0000 0000 0100 1011. Als u de bitsgewijze NOT-bewerking uitvoert 1111 1111 1111 1111 1111 1111 1011 0100, is dit decimaal -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  

See Also

Expressions (Transact-SQL)
Operators (Transact-SQL)
Bitwise Operators (Transact-SQL)