~ (Bitwise NOT) (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Melakukan operasi NOT logis bitwise pada nilai bilangan bulat.

Konvensi sintaks transact-SQL

Sintaksis

~ expression  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

expression
Adalah ekspresi yang valid 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.

Catatan

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

Jenis Hasil

int jika nilai input adalah int.

smallint jika nilai input kecil.

tinyint jika nilai inputnya kecil.

bit jika nilai input bit.

Keterangan

Operator ~ bitwise melakukan bitwise logis NOT 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.

Penting

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 dapat 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 operasi NOT pada hasilnya.

Contoh

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, ~ b_int_value  
FROM bitwise;  

Berikut adalah hasilnya:

--- ---   
-171  -76   
  
(1 row(s) affected)  

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  

Lihat Juga

Ekspresi (Transact-SQL)
Operator (Transact-SQL)
Operator Bitwise (Transact-SQL)