Udostępnij za pomocą


~ (Bitwise NIE) (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Wykonuje bitową operację logiczną NOT na wartości całkowitej.

Transact-SQL konwencje składni

Syntax

~ expression  

Arguments

expression
Jest dowolnym prawidłowym wyrażeniem dowolnego z typów danych kategorii typu danych całkowitych, bitu lub binarnych lub varbinary . Wyrażenie jest traktowane jako liczba binarna dla operacji bitowej.

Note

Tylko jedno wyrażenie może być typu danych binarnych lub varbinary w operacji bitowej.

Typy wyników

int , jeśli wartości wejściowe są int.

smallint, jeśli wartości wejściowe są małe.

tinyint , jeśli wartości wejściowe są małe.

bit , jeśli wartości wejściowe są bitowe.

Remarks

Operator ~ bitowy wykonuje bitową wartość logiczną NOT dla wyrażenia, biorąc każdy bit z kolei. Jeśli wyrażenie ma wartość 0, bity w zestawie wyników są ustawione na 1; w przeciwnym razie bit w wyniku jest czyszczone na wartość 0. Innymi słowy, te są zmieniane na zera, a zera są zmieniane na te.

Important

Podczas wykonywania dowolnej operacji bitowej długość magazynu wyrażenia używanego w operacji bitowej jest ważna. Zalecamy użycie tej samej liczby bajtów podczas przechowywania wartości. Na przykład przechowywanie wartości dziesiętnej 5 jako małego, małego lub int tworzy wartość przechowywaną z różnymi liczbami bajtów: tinyint przechowuje dane przy użyciu 1 bajtu; smallint przechowuje dane przy użyciu 2 bajtów, a int przechowuje dane przy użyciu 4 bajtów. W związku z tym wykonywanie operacji bitowej na wartości dziesiętnej int może generować różne wyniki od tych, które używają bezpośredniego translacji binarnej lub szesnastkowej, zwłaszcza gdy ~ jest używany operator (bitowy NOT). Bitowa operacja NOT może wystąpić na zmiennej o krótszej długości. W takim przypadku, gdy krótsza długość jest konwertowana na dłuższą zmienną typu danych, bity w górnej 8 bitach mogą nie być ustawione na oczekiwaną wartość. Zalecamy przekonwertowanie mniejszej zmiennej typu danych na większy typ danych, a następnie wykonanie operacji NOT na wyniku.

Examples

Poniższy przykład tworzy tabelę przy użyciu typu danych int do przechowywania wartości i wstawia dwie wartości do jednego wiersza.

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

Następujące zapytanie wykonuje bitowe not na kolumnach a_int_value i b_int_value .

SELECT ~ a_int_value, ~ b_int_value  
FROM bitwise;  

Oto zestaw wyników:

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

Binarna reprezentacja wartości 170 (a_int_value lub A) to 0000 0000 0000 0000 0000 0000 1010 1010. Wykonanie bitowej operacji NOT na tej wartości powoduje wygenerowanie wyniku 1111 1111 1111 1111 1111 1111 0101 0101binarnego , który jest dziesiętny -171. Reprezentacja binarna dla wartości 75 to 0000 0000 0000 0000 0000 0000 0100 1011. Wykonanie bitowej operacji NOT powoduje wygenerowanie 1111 1111 1111 1111 1111 1111 1011 0100wartości , która jest dziesiętna -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  

Zobacz też

Wyrażenia (Transact-SQL)
Operatory (Transact-SQL)
Operatory bitowe (Transact-SQL)