0

有人可以用更简单的术语解释一下吗?

170 的二进制表示是0000 0000 1010 1010. 75 的二进制表示是0000 0000 0100 1011. 对这两个值执行按位与运算会产生二进制结果0000 0000 0000 1010,即十进制 10。

0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010

一旦我知道正在做什么,这将使我点击。我对二进制有一个基本的了解,并且知道一些我的头顶......就像二进制中表示的 1 将是000000012 会是000000103 会是000000114 会是000001005 会是000001016 会是00000110。所以我明白当你每次上升一个数字时发生了什么。

我也理解这个 sql 开发人员在减去时发生了什么,但是当她使用 t-sql 代码来查找她的答案时,并没有遗漏什么......关于这个链接中所说的内容。

http://sqlfool.com/2009/02/bitwise-operations/

4

1 回答 1

3

将示例中的各个二进制数字视为列。如果特定列的两个输入行中都有 1,则该列的输出为 1。否则为0。

AND 运算符可用于“屏蔽”值。因此,如果您只想要一个数字的前四个低位,您可以将其与 15 相加,如下所示:

0010 1101 1110 1100
0000 0000 0000 1111
-------------------
0000 0000 0000 1100  <-- the value of the first four bits in the top number

这就是您链接的 SQL 示例中发生的情况。

freq_interval is one or more of the following:
1 = Sunday
2 = Monday
4 = Tuesday
8 = Wednesday
16 = Thursday
32 = Friday
64 = Saturday

对应于位掩码:

0000 0001 = Sunday
0000 0010 = Monday
0000 0100 = Tuesday
0000 1000 = Wednesday
0001 0000 = Thursday
0010 0000 = Friday
0100 0000 = Saturday
于 2013-03-21T20:15:05.323 回答