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