~ (Bitwise TIDAK) (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Melakukan operasi logis NOT bitwise pada nilai bilangan bulat.

Konvensi sintaks transact-SQL

Syntax

~ expression

Arguments

expression

Ekspresi valid apa pun dari salah satu jenis data dari kategori jenis data bilangan bulat, bit, atau jenis data biner atau varbinary. ekspresi diperlakukan sebagai angka biner untuk operasi bitwise.

Note

Hanya satu ekspresi yang dapat berupa jenis data biner atau varbinary dalam operasi bitwise.

Tipe pengembalian

int jika nilai input adalah int.

smallint jika nilai input kecil.

tinyint jika nilai inputnya kecil.

bit jika nilai input bit.

Remarks

Operator ~ bitwise melakukan logis NOT bitwise untuk ekspresi, mengambil setiap bit secara bergantian. Jika ekspresi memiliki nilai 0, bit dalam tataan hasil diatur ke 1. Jika tidak, bit dalam hasil dibersihkan ke nilai 0. Dengan kata lain, yang diubah menjadi nol dan nol diubah menjadi nol.

Important

Ketika Anda melakukan segala jenis operasi bitwise, panjang penyimpanan ekspresi yang digunakan dalam operasi bitwise penting. Kami menyarankan agar Anda menggunakan jumlah byte yang sama ini saat menyimpan nilai. Misalnya, menyimpan nilai desimal 5 sebagai tinyint, smallint, atau int menghasilkan nilai yang disimpan dengan jumlah byte yang berbeda: tinyint menyimpan data menggunakan 1 byte; smallint menyimpan data menggunakan 2 byte, dan int menyimpan data menggunakan 4 byte. Oleh karena itu, melakukan operasi bitwise pada nilai desimal int dapat menghasilkan hasil yang berbeda dari yang menggunakan terjemahan biner atau heksadesimal langsung, terutama ketika ~ operator (bitwise NOT) digunakan. Operasi bitwise NOT mungkin terjadi pada variabel dengan panjang yang lebih pendek. Dalam hal ini, ketika panjang yang lebih pendek dikonversi ke variabel jenis data yang lebih panjang, bit dalam 8 bit atas mungkin tidak diatur ke nilai yang diharapkan. Kami menyarankan agar Anda mengonversi variabel jenis data yang lebih kecil ke jenis data yang lebih besar, lalu melakukan NOT operasi pada hasilnya.

Examples

Contoh berikut membuat tabel menggunakan tipe data int untuk menyimpan nilai dan menyisipkan dua nilai ke dalam satu baris.

CREATE TABLE bitwise
(
    a_int_value INT NOT NULL,
    b_int_value INT NOT NULL
);
GO

INSERT bitwise
VALUES (170, 75);
GO

Kueri berikut melakukan bitwise NOT pada a_int_value kolom dan b_int_value .

SELECT ~a_int_value AS NotA,
       ~b_int_value AS NotB
FROM bitwise;

Berikut kumpulan hasilnya.

NotA   NotB
-----  -----
-171   -76

Representasi biner 170 (a_int_value atau A) adalah 0000 0000 0000 0000 0000 0000 1010 1010. Melakukan operasi bitwise NOT pada nilai ini menghasilkan hasil 1111 1111 1111 1111 1111 1111 0101 0101biner , yaitu desimal -171. Representasi biner untuk 75 adalah 0000 0000 0000 0000 0000 0000 0100 1011. Melakukan operasi bitwise NOT menghasilkan 1111 1111 1111 1111 1111 1111 1011 0100, yaitu desimal -76.

 (~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