In binario, "set" significa "ha il valore 1". "Non impostato" significa "ha il valore 0".
Dai documenti Oracle per BITAND:
"Il risultato viene calcolato in più passaggi. Innanzitutto, ogni argomento A viene sostituito con il valore SIGN(A)*FLOOR(ABS(A)). Questa conversione ha l'effetto di troncare ogni argomento verso zero. Successivamente, ogni argomento A (che deve now be an integer value) viene convertito in un valore intero binario in complemento a due di n bit. I valori di due bit vengono combinati utilizzando un'operazione AND bit per bit. Infine, il valore di complemento a due di n bit risultante viene riconvertito in NUMBER."
In parole povere, questa funzione tronca i suoi argomenti, li converte in un numero binario (attualmente limitato a 128 bit), AND unisce i due numeri binari e restituisce il risultato della conversione del numero binario in un NUMERO.
Ecco il risultato di tutte le possibili combinazioni di zero e uno:
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;
Un esempio più complesso sarebbe ANDing insieme 11 e 5. In binario, 11 decimale diventa "1011". 5 decimale diventa "0101" binario. Se tu E questi valori insieme, come in
1 0 1 1
0 1 0 1
-------
0 0 0 1
ottieni 1 binario, che è ancora 1 quando riconvertito in decimale.
Condividi e divertiti.