oracle bitand函数

时间:2012-05-16 08:24:32

标签: sql oracle

我对oracle bitand函数感到困惑。我知道它用于控制是否设置了两个位。但是,被设定的意义是什么。何时以及为何使用它。如果你可以根据一个真实的例子给出一个例子,那对我来说就是这样。谢谢你的回答。

1 个答案:

答案 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。

分享并享受。