我对oracle bitand函数感到困惑。我知道它用于控制是否设置了两个位。但是,被设定的意义是什么。何时以及为何使用它。如果你可以根据一个真实的例子给出一个例子,那对我来说就是这样。谢谢你的回答。
答案 0 :(得分:6)
在二进制中,“set”表示“值为1”。 “未设置”表示“值为0”。
来自BITAND的Oracle文档:
“结果是通过几个步骤计算出来的。首先,每个参数A都被替换为 值SIGN(A)* FLOOR(ABS(A))。此转换具有截断每个转换的效果 争论为零。接下来,每个参数A(现在必须是整数值) 被转换为n位二进制补码二进制整数值。两位值是 使用按位AND运算组合。最后,得到的n位二进制补码 价值转换回NUMBER。“
简单地说,这个函数截断它的参数,将它们转换为二进制数(目前限制为128位),并将两个二进制数一起转换,并返回将二进制数转换回NUMBER的结果。
以下是零和一的所有可能组合的结果:
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;
更复杂的例子是AND和11和5.在二进制中,11十进制变为“1011”。 5位小数变为“0101”二进制。如果你将这些值加在一起,就像在
中一样1 0 1 1
0 1 0 1
-------
0 0 0 1
你得到1个二进制数,当转换回十进制时仍为1。
分享并享受。