有人可以用更简单的术语解释这个吗?
170的二进制表示是0000 0000 1010 1010
。 75的二进制表示是0000 0000 0100 1011
。对这两个值执行按位AND运算会生成二进制结果0000 0000 0000 1010
,即十进制10。
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010
一旦我知道正在做什么,这将使我点击。我对二进制文件有一个基本的了解,并且知道了一些我最喜欢的东西......比如用二进制表示的1将是00000001
而2将是00000010
而3将是00000011
4为00000100
,5为00000101
,6为00000110
。所以我理解你每次起床时发生的事情。
我也理解当这个sql开发人员正在减去时会发生什么,但是当她使用t-sql代码找到她的答案时,没有什么东西丢失....关于这个链接中所说的内容。
答案 0 :(得分: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