Computer science 是否存在位运算符法则?
从代数定律的角度考虑,我想知道在比特操作领域是否存在类似于代数的官方指导线 代数示例Computer science 是否存在位运算符法则?,computer-science,bitwise-operators,boolean-logic,proof,Computer Science,Bitwise Operators,Boolean Logic,Proof,从代数定律的角度考虑,我想知道在比特操作领域是否存在类似于代数的官方指导线 代数示例 a-b=/=b-a 让a=7和b=5 a-b=2 b-a=-2 让a=10和b=3 a-b=7 b-a=-7 因此如果a>b,b-a将是与a-b的负等价物。因此,我们可以说 | a-b |=| b-a | 其中|x |表示x的绝对值 按位示例 a | b=/=a+b 00001010 = 10 OR 00000101 = 5 ----------------- 000
a-b=/=b-a
让a=7
和b=5
a-b=2
b-a=-2
a=10
和b=3
a-b=7
b-a=-7
如果a>b
,b-a
将是与a-b
的负等价物。因此,我们可以说| a-b |=| b-a |
其中|x |
表示x
的绝对值
按位示例
a | b=/=a+b
00001010 = 10
OR 00000101 = 5
-----------------
00001111 = 15
注意无符号字节操作:10 | 5=15
,它与10+5=15
但是,如果a
和b
都等于5,并且我们或它们,结果将是5,因为a=b
,这意味着我们只是在相互比较相同的精确位,因此不会产生新的结果
同样地,如果b=7
,a=10
而我们或
他们,我们将有15个。这是因为
00001010 = 10
OR 00000111 = 7
-----------------
00001111 = 15
因此,我们可以有效地得出这样的结论:a | b=/=a+b
仅是在操作数对应位之间应用的布尔运算符的逐位运算遵循类似于布尔代数定律的定律,例如:
和(&)
:交换的,结合的,恒等式(0xFF),零化子(0x00),幂等式
- 或(|)
:交换的,结合的,恒等式(0x00),零化子(0xFF),幂等式
异或(^)
:可交换、关联、标识(0x00)、反向(自身)
非(~)
:反向(自身)a&(a|b)=a
a |(a&b)=a
- 在或之上:
a和(b | c)=(a和b)|(a和c)
- 通过异或:
a&(b^c)=(a&b)^(a&c)
- 或以上:
a |(b&c)=(a | b)和(a | c)
~(a&b)=~a | ~b
~(a | b)=~a&~b
- 并分布在XOR上
- 计算总和的乘积:
(a^b)和(c^d)=(a&c)^(a&d)^(b&c)^(b&d)
- 通过加减法:
a-b=~(~a+b)
- 分别添加进位:
a+b=(a^b)+((a&b)这是一本必备的:这包含了大多数使用位运算符可以做的有用的事情:谢谢。如果你们中的任何一位给出一个答案,我都很乐意接受:)hacker's delight,是一本很棒的书,我也看不到更多的属性,交换性表示交换性。我不能完全理解非移位算子的分配性。尽管如此,我还是扩展了移位运算符,因为它们对于所有其他操作都是分布式的。是的,好吧,我将发布更多的移位运算符。我想我可以在社区wiki中得到这个答案,因此您可以快速编辑它。如果我没有这个非常不完整的答案也没关系非常完整的属性摘要,我能看到的唯一一件你没有提到的事情就是按位旋转。做得好!得到了我想要的东西。