Dalam biner, "set" berarti "memiliki nilai 1". "Tidak disetel" berarti "memiliki nilai 0".
Dari dokumen Oracle untuk BITAND:
"Hasilnya dihitung dalam beberapa langkah. Pertama, setiap argumen A diganti dengan nilai SIGN(A)*FLOOR(ABS(A)). Konversi ini memiliki efek pemotongan setiap argumen menuju nol. Selanjutnya, setiap argumen A (yang harus sekarang menjadi nilai integer) diubah menjadi nilai integer biner komplemen dua n-bit. Kedua nilai bit digabungkan menggunakan operasi AND bitwise. Akhirnya, nilai komplemen dua n-bit yang dihasilkan dikonversi kembali ke NUMBER."
Sederhananya, fungsi ini memotong argumennya, mengubahnya menjadi bilangan biner (saat ini dibatasi hingga 128 bit), AND adalah dua bilangan biner bersama-sama, dan mengembalikan hasil konversi bilangan biner kembali menjadi NUMBER.
Inilah hasil dari semua kemungkinan kombinasi nol dan satu:
SELECT BITAND(0, 0) AS "0, 0", -- i.e. 0 AND 0 = 0
BITAND(0, 1) AS "0, 1", -- i.e. 0 AND 1 = 0
BITAND(1, 0) AS "1, 0", -- i.e. 1 AND 0 = 0
BITAND(1, 1) AS "1, 1" -- i.e. 1 AND 1 = 1
FROM DUAL;
Contoh yang lebih kompleks adalah ANDing bersama 11 dan 5. Dalam biner, 11 desimal menjadi "1011". 5 desimal menjadi biner "0101". Jika Anda DAN nilai-nilai ini bersama-sama, seperti pada
1 0 1 1
0 1 0 1
-------
0 0 0 1
Anda mendapatkan 1 biner, yang masih 1 saat dikonversi kembali ke desimal.
Bagikan dan nikmati.