按位和运算符

时间:2013-03-21 20:09:04

标签: binary

有人可以用更简单的术语解释这个吗?

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代码找到她的答案时,没有什么东西丢失....关于这个链接中所说的内容。

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

1 个答案:

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