~ (Bitweises NOT) (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Führt eine bitweise logische NOT-Operation für einen ganzzahligen Wert durch.
Transact-SQL-Syntaxkonventionen
Syntax
~ expression
Argumente
expression
Ein gültiger Ausdruck (expression) eines beliebigen Datentyps der ganzzahligen Datentypkategorie oder des Datentyps bit, binary oder varbinary. expression wird in der bitweisen Operation als binäre Zahl behandelt.
Hinweis
Nur eines der expression-Argumente kann in einer bitweisen Operation vom Datentyp binary oder varbinary sein.
Ergebnistypen
int, wenn die Eingabewerte vom Typ int sind.
smallint, wenn die Eingabewerte vom Typ smallint sind.
tinyint, wenn die Eingabewerte vom Typ tinyint sind
bit, wenn die Eingabewerte vom Typ bit sind
Bemerkungen
Mit dem bitweisen ~ -Operator wird ein bitweises logisches NOT für expression durchgeführt, indem jedes Bit abgearbeitet wird. Wenn expression den Wert 0 (null) besitzt, wird für die Bits im Resultset 1 festgelegt. Andernfalls wird das Bit im Ergebnis gelöscht auf 0 (null) festgelegt. Mit anderen Worten, Einsen werden zu Nullen und Nullen werden zu Einsen geändert.
Wichtig
Beim Durchführen aller bitweisen Operationen ist es wichtig, auf die Speicherlänge des Ausdrucks zu achten, der bei der bitweisen Operation verwendet wird. Beim Speichern von Werten wird empfohlen, dieselbe Anzahl von Bytes zu verwenden. Beispielsweise wird beim Speichern des dezimalen Werts 5 als tinyint, smallint oder int dieser Wert mit unterschiedlicher Byteanzahl abgespeichert: Bei tinyint wird 1 Byte verwendet, bei smallint 2 Bytes, und bei int werden 4 Bytes belegt. Daher kann eine bitweise Operation mit einem dezimalen int-Wert andere Ergebnisse erzeugen als eine direkte binäre oder hexadezimale Umwandlung, besonders bei Verwendung des ~-Operators (bitweises NOT). Eine bitweise NOT-Operation kann auf eine Variable kürzerer Länge angewendet werden. In diesem Fall kann es vorkommen, dass bei der Konvertierung in einen längeren Datentyp die höherwertigen acht Bits nicht auf den erwarteten Wert festgelegt werden. Es wird empfohlen, die Variable mit dem kleineren Datentyp in den größeren Datentyp zu konvertieren und anschließend die NOT-Operation mit dem Ergebnis durchzuführen.
Beispiele
Im folgenden Beispiel wird eine Tabelle mithilfe des int-Datentyps erstellt, um die Werte zu speichern, und die beiden Werte in eine Zeile eingefügt.
CREATE TABLE bitwise (
a_int_value INT NOT NULL,
b_int_value INT NOT NULL);
GO
INSERT bitwise VALUES (170, 75);
GO
Die folgende Abfrage führt das bitweise NOT für die Spalten a_int_value
und b_int_value
durch.
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise;
Im Folgenden wird das Resultset aufgeführt:
--- ---
-171 -76
(1 row(s) affected)
Die binäre Darstellung von 170 (a_int_value
oder A
) ist 0000 0000 0000 0000 0000 0000 1010 1010
. Die Durchführung einer bitweisen NOT-Operation mit diesem Wert erzeugt das binäre Ergebnis 1111 1111 1111 1111 1111 1111 0101 0101
, was dem dezimalen Wert -171 entspricht. Die binäre Darstellung von 75 ist 0000 0000 0000 0000 0000 0000 0100 1011
. Die Durchführung der bitweisen NOT-Operation ergibt 1111 1111 1111 1111 1111 1111 1011 0100
, was dem dezimalen Wert -76 entspricht.
(~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
Weitere Informationen
Ausdrücke (Transact-SQL)
Operatoren (Transact-SQL)
Bitweise Operatoren (Transact-SQL)