与,或,非,异或进行位运算的总结
2013-01-11 17:50
246 查看
1.与全零,全F的结果及应用
此处仅以32位变量x=0x12345678为例, 设O(zero)=0x00000000, F(one)=0xFFFFFFFF
x&O=0, x&F=x
x|O=x, x|F=F
x^O=x, x^F=~F
所以对于要把变量某些位置0,某些位不变,则选&
要把某些位置1,某些位不变,则选|
要把某些位变为原值的反,某些位不变,则选^
比如将x的最低有效位字节设置成全1,其他字节都保持不变,即变成0x876543FF, 则进行运算x|0x000000FF即可
2.讨论与或非异或结果的完备性
x,y进行操作之后的结果有16种(当x=0,1;y=0,1时),每一类操作只能导出一种结果,比如&操作符0&0=0,0&1=1,1&0=1,1&1=1,结果为[0,1,1,1].这样的结果有16种,两个操作数通过操作符的组合是否可以覆盖16种情况.刚开始因为三种双目操作符的结果都是对称的,写成矩阵[0,1;1,1]的形式.所以我认为不对称的结果是不能通过组合得出的,其实不然,比如[1,0;1,1]是可以通过x|~y得到的.以下是我已经得到的一些结果
[0,0;0,0] = x|~x
[0,0;0,1] = x&y
[0,0;1,0] = x&~y
[0,0;1,1] = (x&y)&(x&~y)
[0,1;0,0] = ~x&y
[0,1;0,1] = ~(x&~y)&(x|y)
[0,1,1,0] = x^y
[0,1;1,1] = x|y
[1,0;0,0] = ~(x|y)
[1,0;0,1] = x&~y
[1,0;1,0] = (x|~y)&~(x&y)
[1,0;1,1] = x|~y
[1,1;0,0] = (~x|y)&~(x&y)
[1,1;0,1] = ~x|y
[1,1;1,0] = ~(x&y)
[1,1;1,1] = ~(x&~x)
这样就证明了这四个符号可以做出任何情况
此处仅以32位变量x=0x12345678为例, 设O(zero)=0x00000000, F(one)=0xFFFFFFFF
x&O=0, x&F=x
x|O=x, x|F=F
x^O=x, x^F=~F
所以对于要把变量某些位置0,某些位不变,则选&
要把某些位置1,某些位不变,则选|
要把某些位变为原值的反,某些位不变,则选^
比如将x的最低有效位字节设置成全1,其他字节都保持不变,即变成0x876543FF, 则进行运算x|0x000000FF即可
2.讨论与或非异或结果的完备性
x,y进行操作之后的结果有16种(当x=0,1;y=0,1时),每一类操作只能导出一种结果,比如&操作符0&0=0,0&1=1,1&0=1,1&1=1,结果为[0,1,1,1].这样的结果有16种,两个操作数通过操作符的组合是否可以覆盖16种情况.刚开始因为三种双目操作符的结果都是对称的,写成矩阵[0,1;1,1]的形式.所以我认为不对称的结果是不能通过组合得出的,其实不然,比如[1,0;1,1]是可以通过x|~y得到的.以下是我已经得到的一些结果
[0,0;0,0] = x|~x
[0,0;0,1] = x&y
[0,0;1,0] = x&~y
[0,0;1,1] = (x&y)&(x&~y)
[0,1;0,0] = ~x&y
[0,1;0,1] = ~(x&~y)&(x|y)
[0,1,1,0] = x^y
[0,1;1,1] = x|y
[1,0;0,0] = ~(x|y)
[1,0;0,1] = x&~y
[1,0;1,0] = (x|~y)&~(x&y)
[1,0;1,1] = x|~y
[1,1;0,0] = (~x|y)&~(x&y)
[1,1;0,1] = ~x|y
[1,1;1,0] = ~(x&y)
[1,1;1,1] = ~(x&~x)
这样就证明了这四个符号可以做出任何情况
相关文章推荐
- 异或运算进行整数交换的陷阱
- 用二进制进行权限管理(按位与 按位或 按位异或 运算 )
- 如何利用异或运算进行简单加密解密
- 按位与、或、异或等运算总结
- 异或加密法 在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。 解密的方法就是再执行一次同样的操作。
- 使用异或运算对数据及文件进行加密处理,附软件及源码
- 使用异或运算对数据及文件进行加密处理,附软件及源码
- java中把两个变量进行值交换,通过异或两次运算就能实现值互换。
- 编写程序将两个等长文件按字节进行异或运算并将结果存放到第三个文件中
- 如何利用异或运算进行简单加密解密
- C语言总结之异或运算的一些特性及巧妙应用
- c# 如何利用异或运算进行简单加密解密
- 使用异或运算对数据及文件进行加密处理,附软件及源码
- 利用”异或”运算的性质,对几个字符进行加密并输出密文,然后再解密。加密算法是:密钥是字符’8’,明文的每个字符和密钥进行异或运算,得到密文。密钥和密文的每个字符再次进行异或运算,重新得到明文。
- 异或加密法 在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。 解密的方法就是再执行一次同样的操作。
- 基于异或(^)运算进行数值交换的可行性分析
- java中进行高精度、大数运算总结BigInteger BigDecimal
- 采用异或运算进行加密和解密
- 利用二进制数据的XOR(异或)运算进行加/解密(C#版)
- C语言总结之异或运算的一些特性及巧妙应用