Sdílet prostřednictvím


~ (Bitwise NE) (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Provede bitové logické NE operace s celočíselnou hodnotou.

Transact-SQL konvence syntaxe

Syntax

~ expression  

Arguments

expression
Je libovolný platný výraz libovolného z datových typů celočíselné kategorie datového typu, bitu nebo binárního nebo varbinárního datového typu. výraz je považován za binární číslo pro bitovou operaci.

Note

V bitové operaci může být pouze jeden výrazz binárního nebo varbinárního datového typu.

Typy výsledků

pokud jsou vstupní hodnoty int.

smallint, pokud jsou vstupní hodnoty malé.

tinyint pokud jsou vstupní hodnoty tinyint.

bit , pokud jsou vstupní hodnoty bit.

Remarks

~ Bitový operátor provádí bitové logické NE pro výraz, přičemž každý bit zase přebírá. Pokud má výraz hodnotu 0, bity v sadě výsledků jsou nastaveny na hodnotu 1; v opačném případě se bit ve výsledku vymaže na hodnotu 0. Jinými slovy se změní na nuly a nuly se změní na nuly.

Important

Při provádění libovolného druhu bitové operace je důležitá délka úložiště výrazu použitého v bitové operaci. Při ukládání hodnot doporučujeme použít stejný počet bajtů. Například uložení desetinné hodnoty 5 jako tinyint, smallint nebo int vytvoří hodnotu uloženou s různými čísly bajtů: tinyint ukládá data pomocí 1 bajtu; smallint ukládá data pomocí 2 bajtů a int ukládá data pomocí 4 bajtů. Proto může provedení bitové operace s desetinnou hodnotou int vytvořit odlišné výsledky od těch, které používají přímý binární nebo šestnáctkový překlad, zejména pokud ~ je použit operátor (bitwise NOT). Operace BITWISE NOT může nastat v proměnné kratší délky. V tomto případě, pokud je kratší délka převedena na delší proměnnou datového typu, bity v horních 8 bitech nemusí být nastaveny na očekávanou hodnotu. Doporučujeme převést menší proměnnou datového typu na větší datový typ a pak provést operaci NOT s výsledkem.

Examples

Následující příklad vytvoří tabulku pomocí datového typu int k uložení hodnot a vloží tyto dvě hodnoty do jednoho řádku.

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

Následující dotaz provádí bitové NE na a_int_value sloupcích a b_int_value sloupcích.

SELECT ~ a_int_value, ~ b_int_value  
FROM bitwise;  

Tady je sada výsledků:

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

Binární reprezentace 170 (a_int_value nebo A) je 0000 0000 0000 0000 0000 0000 1010 1010. Provádění bitové OPERACE NOT na této hodnotě vytvoří binární výsledek 1111 1111 1111 1111 1111 1111 0101 0101, což je desítkové -171. Binární reprezentace pro 75 je 0000 0000 0000 0000 0000 0000 0100 1011. Provádění bitové operace NOT vytvoří 1111 1111 1111 1111 1111 1111 1011 0100, což je desítkové -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  

Viz také

Výrazy (Transact-SQL)
Operátory (Transact-SQL)
Bitové operátory (Transact-SQL)