Trong hệ nhị phân, "set" có nghĩa là "có giá trị 1". "Chưa đặt" có nghĩa là "có giá trị 0".
Từ tài liệu Oracle cho BITAND:
"Kết quả được tính theo nhiều bước. Đầu tiên, mỗi đối số A được thay thế bằng giá trị SIGN (A) * FLOOR (ABS (A)). Việc chuyển đổi này có tác dụng cắt ngắn đối số về 0. Tiếp theo, mỗi đối số A (phải bây giờ là một giá trị số nguyên) được chuyển đổi thành giá trị số nguyên nhị phân bổ sung của n-bit hai. Hai giá trị bit được kết hợp bằng cách sử dụng phép toán bitwise AND. Cuối cùng, giá trị bổ sung của n-bit hai kết quả được chuyển đổi trở lại NUMBER. "
Nói một cách đơn giản, hàm này cắt ngắn các đối số của nó, chuyển đổi chúng thành một số nhị phân (hiện giới hạn ở 128 bit), AND là hai số nhị phân cùng nhau và trả về kết quả của việc chuyển đổi số nhị phân trở lại một SỐ.
Đây là kết quả của tất cả các kết hợp có thể có của không và một:
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;
Một ví dụ phức tạp hơn sẽ là AND kết hợp 11 và 5. Trong hệ nhị phân, số thập phân 11 trở thành "1011". 5 thập phân trở thành "0101" nhị phân. Nếu bạn VÀ các giá trị này cùng nhau, như trong
1 0 1 1
0 1 0 1
-------
0 0 0 1
bạn nhận được 1 số nhị phân, vẫn là 1 khi được chuyển đổi lại thành số thập phân.
Chia sẻ và tận hưởng.