Aracılığıyla paylaş


~ (Bitwise not) (Transact-SQL)

Bitsel mantıksal değil gerçekleştirdiği operasyonda bir tamsayı değeri.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

~ expression

Bağımsız değişkenler

  • expression
    Herhangi bir geçerli ifade tamsayı veri türü kategori veri türleri herhangi birinin bit, veya binary veya varbinary veri türü.expressionbit düzeyinde işlemiçin ikili sayı olarak değerlendirilir.

    Not

    Tek bir expression olabilir, ya da binary veya varbinary veri türü bit düzeyinde işlem.

Sonuç türleri

intgiriş değerleri, int.

smallintgiriş değerleri, smallint.

tinyintgiriş değerleri, tinyint.

bitgiriş değerleri, bit.

Açıklamalar

~ Bitwise işleç gerçekleştirir Bitsel mantıksal değil için expression, alma her bit Aç.expression Değeri 0'ın sonuç kümesi küme 1; bitleridir Aksi takdirde sonuç bit değeri 0 olarak temizlenir.Başka bir deyişle, olanları sıfır değerine değiştirilir ve sıfır olanları için değiştirilir.

Önemli notÖnemli

Her türlü bit düzeyinde işlemgerçekleştirdiğinizde, bit düzeyinde işlem ifade depolama uzunluğu önemlidir.Bu sayıda bayt değerleri saklarken kullanmanızı öneririz.Örneğin, 5 gibi ondalık değeri saklamak bir tinyint, smallint, veya int bayt farklı sayıda saklanan bir değer üretir: tinyint1 bayt kullanarak verileri saklar; smallint2 bayt kullanarak verileri depolar ve int depolayan veri kullanarak 4 bayt.Bu nedenle, üzerinde bir bit düzeyinde işlem gerçekleştirerek bir int ondalık değer bir doğrudan ikili ya da onaltılık çevirisi kullanılarak kullanılanlardan farklı sonuçlar elde etmek, özellikle ~ (bitwise not) işleç kullanılır.Bit düzeyinde işlem değil kısa uzunluğu değişken üzerinde ortaya çıkabilecek.Uzun veri türünü atar ve daha kısa uzunluğu dönüştürüldüğünde durumüst 8 bit bit küme için beklenen değer olmayabilir.Daha küçük veri türü değişkeni için daha büyük veri türü dönüştürme ve sonuç üzerinde not işlemi öneririz.

Örnekler

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

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 değil üzerinde Bitsel gerçekleştiren a_int_value ve b_int_value sütunlar.

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

İşte sonuç kümesi:

--- --- 
-171  -76 

(1 row(s) affected)

170 İkili gösterimi (a_int_value veya A) ise 0000 0000 1010 1010.Bitsel gerçekleştirerek bu değer operasyonda ikili sonuç üretir 1111 1111 0101 0101, ondalık-171 olduğu.75 İkili gösterimi olan 0000 0000 0100 1011.Bitsel gerçekleştirmek değil işlemi üreten 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