Udostępnij za pośrednictwem


~ (Bitowe NOT) (Transact-SQL)

Operatory logiczne nie wykonuje operację na wartość całkowitą.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

~ expression

Argumenty

  • expression
    Wszelkie obowiązuje wyrażenie jednego z typów danych kategorię typu danych integer, bit, lub binary lub varbinary typów danych.expressionjest traktowana jako liczbę dwójkową dla operacja bitowa.

    Ostrzeżenie

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

Typy wyników

intJeśli wartości wejściowe są int.

smallintJeśli wartości wejściowe są smallint.

tinyintJeśli wartości wejściowe są tinyint.

bitJeśli wartości wejściowe są bit.

Uwagi

~ Operatory logiczne nie wykonuje logiczną operator dla expression, pobieranie bit w ruch.Jeśli expression ma wartość 0, zestaw wyników bity są zestaw na 1; w przeciwnym wypadku bit w wyniku jest ustawiony na wartość 0.Innymi słowy te są zamieniane na zera i zera są zmieniane na jedynek.

Ważna informacjaWażne:

Podczas wykonywania wszelkiego rodzaju operacja bitowaważne jest długość przechowywania wyrażenie użyte w operacja bitowa .Zaleca się, aby użyć tę samą liczbę bajtów podczas przechowywania wartości.Na przykład przechowywanie wartości dziesiętne 5 jako tinyint, smallint, lub int wartości przechowywane z różną liczbę bajtów: tinyintprzechowuje dane przy użyciu 1 bajt; smallintprzechowuje dane przy użyciu 2 bajty, i 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 szesnastkowym, szczególnie wtedy, gdy ~ (bitowe NOT) używany jest operator .Bitowe operacja nie może występować w zmiennej krótszy okres.W tym przypadekkonwertowania krótszy okres dłuższy zmiennej typu danych bity w górnym 8 bitów może nie być zestaw na wartość oczekiwana.Firma Microsoft zaleca konwersji mniejszych zmiennej typu danych większych typ danych i wykonywania tej operacji na wynik.

Przykłady

Poniższy przykład tworzy tabela przy użyciu int Typ do przechowywania wartości danych i wstawia 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 logiczną nie na a_int_value i b_int_value kolumny.

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

Oto zestaw wyników:

--- --- 
-171  -76 

(1 row(s) affected)

Reprezentacja binarna 170 (a_int_value lub A) jest 0000 0000 1010 1010.Wykonuje logiczną binarne wynik nie operacji na wartość 1111 1111 0101 0101, który jest decimal-171.Reprezentacja binarna 75 jest 0000 0000 0100 1011.Wykonuje logiczną operację nie daje 1111 1111 1011 0100, który jest decimal -76.

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