Aracılığıyla paylaş


~ (Bitwise NOT) (Transact-SQL)

Bitwise, mantıksal bir NOT gerçekleştirdiği işlem bir tamsayı.

Topic link iconTransact-SQL sözdizimi kuralları

~ expression

Bağımsız değişkenler

  • 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.

    Not

    Yalnızca bir expression aşağıdakilerden biri olabilir. binary veya varbinary içinde veri türü bir bit düzeyinde işlem.

Sonuç türleri

int Giriş değerleri int.

smallint Giriş değerleri smallint.

tinyint Giriş değerleri tinyint.

bit Giriş değerleri bit.

Remarks

The ~ bitwise işleç performs a bitwise logical NOT for the expression, taking each bit in turn. If expression 0, sonuç bitlerin değeri küme olan küme için 1; aksi durumda, sonuç bit değerini 0 olarak temizlenir. Diğer bir deyişle, olanlar için sıfır olarak değiştirilir ve sıfırlar için birlerin değiştirilir.

Important noteImportant Note:

Ne zaman herhangi tür gerçekleştirdiğiniz bit düzeyinde işlem, ifade içinde kullanılan depolama uzunluğunu bit düzeyinde işlem önemlidir.Bayt sayısı aynı değerleri saklarken kullanmanızı öneririz.Örneğin, ondalık değeri 5 olarak depolamak bir tinyint, smallint, veya int farklı sayıda bayt ile saklanan bir değer üretir: tinyint 1 bayt; kullanarak verileri depolar. smallint 2 bayt kullanarak verileri depolar ve int 4 bayt kullanarak verileri depolar. Üzerinde bu nedenle, bitwise bir işlemi gerçekleştiren bir int ondalık değer, bir doğrudan ikili ya da onaltılık çevirisini kullanarak değerlerden farklı sonuçlar oluşturabilir, özellikle ~ (bitwise NOT) işleç kullanılır. The bitwise NOT işlemi bir daha kısa bir uzunluk değişkeni oluşabilir.Bu durumda, bir uzun veri türü değişkeni için daha kısa uzunluğu dönüştürüldüğünde üst 8 bit biti olamaz küme için beklenen değer.Daha küçük veri türünü değişken daha büyük veri türüne dönüştürmek ve sonra sonuç üzerinde NOT işlemi gerçekleştirin öneririz.

Örnekler

Aşağıdaki örnek, kullanarak bir tablo oluşturur int veri değerleri depolamak için yazın ve iki değer, bir satır ekler.

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

Aşağıdaki sorgu NOT on the bitwise gerçekleştirir a_int_value ve b_int_value sütunlar.

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

sonuç kümesi aşağıdadır:

--- --- 
-171  -76 

(1 row(s) affected)

170 (Bir ikili gösterimia_int_value veya A) olan 0000 0000 1010 1010. The bitwise gerçekleştirme NOT işlemi bu değeri ikili sonuç üretir. 1111 1111 0101 0101, ondalık-171 olduğu. Ikili gösterimidir için 75 0000 0000 0100 1011. The bitwise gerçekleştirme işlemi için bir NOT oluşturur 1111 1111 1011 0100, ondalık-76 olduğu.

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