Udostępnij za pośrednictwem


~ (Bitowe NOT) (języka Transact-SQL)

Bitowe NOT logiczne wykonuje operację na wartość całkowitą.

Topic link iconKonwencje składni języka Transact-SQL

~ expression

Argumenty

  • expression
    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.expression is treated as a binary number for the bitwise operation.

    Uwaga

    Tylko jeden expression może być: binary lub varbinary Typ danych w operacja bitowa.

Typy wynik

int w przypadku wartości wejściowych int.

smallint w przypadku wartości wejściowych smallint.

tinyint w przypadku wartości wejściowych tinyint.

bit w przypadku wartości wejściowych bit.

Remarks

The ~ bitwise operator performs a bitwise logical NOT for the expression, taking each bit in turn.Jeśli expression ma wartość 0, liczba bitów zestaw wyników są ustawione na 1; w przeciwnym wypadku bit w wyniku nie jest zaznaczone na wartość 0. Innymi słowy takich, które są zamieniane na zera i zera są zamieniane na takich, które.

Important noteImportant Note:

Podczas wykonywania jakiejkolwiek operacja bitowa długość przechowywania wyrażenie używane w operacja bitowa jest ważna.Firma Microsoft zaleca, aby używać tego samego liczba bajtów przechowywania wartości.Na przykład, przechowywanie wartości dziesiętne 5, tinyint, smallint, lub int tworzy wartości przechowywane razem z różnej liczby bajtów: tinyint przechowuje dane za pomocą 1 bajt. smallint przechowuje dane przy użyciu 2 bajty, a int przechowuje dane za pomocą 4 bajty. W związku z tym, wykonywanie operacja bitowa na int Wartość dziesiętna może wygenerować różne wyniki od tych, za pomocą bezpośredniego translacji binarny lub szesnastkowy, szczególnie wtedy, gdy ~ (nie na poziomie bitowym) używany jest operator. Bitowe operacja nie może występować w zmiennej długości krótszy.W takim przypadek konwertowania krótszy okres dłuższy zmiennej typu danych bitów w górnym 8 bitów nie zestaw na wartość oczekiwana.Firma Microsoft zaleca konwersji mniejszych zmiennej typu danych większych typ danych, a następnie wykonaj operację NOT na wynik.

Przykłady

W następującym przykładzie zostanie utworzony przy użyciu tabela int dane wpisz do przechowywania wartości i wstawia te dwie wartości w jednym wierszu.

USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise;
GO
CREATE TABLE bitwise
( 
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO

Następująca kwerenda wykonuje bitowe nie na a_int_value i b_int_value kolumny.

USE tempdb;
GO
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise;

Poniżej znajduje się zestaw wyników:

--- --- 
-171  -76 

(1 row(s) affected)

Reprezentacja binarna 170 (a_int_value lub A) jest 0000 0000 1010 1010. Wykonywanie bitowe nie operacji na wartość ta daje wynik binarne 1111 1111 0101 0101, czyli-171 dziesiętnej. Jest reprezentacja binarna do 75 0000 0000 0100 1011. Bitowe wykonanie operacji nie daje 1111 1111 1011 0100, czyli-76 dziesiętnej.

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