【数学】位运算与代数结构

在java中,位运算主要有非 ∼ \sim ,与 & \& &,或 ∣ | ,异或 ∧ \wedge ,左移 < < << <<,右移 > > >> >>,算数右移 > > > >>> >>>,这么多种。我们只考虑三十二位整数,也就是java中的int类型。将其符合的运算律以及代数结构整理如下:
Z Z Z是三十二位整数全体。则 ∀ x ∈ Z \forall x \in Z xZ,有:

1、 x + ∼ x = − 1 x+\sim x=-1 x+x=1
证明可以由计算机中负数表示方法得到。因为 − x = ∼ x + 1 -x=\sim x+1 x=x+1,所以上式成立。

2、设 x ∈ { 0 , 1 } x\in\{0,1\} x{0,1},则 x & 0 = 0 , x ∣ 1 = 1 , x & 1 = x , x ∣ 0 = x x\&0=0, x|1=1, x\&1=x, x|0=x x&0=0,x1=1,x&1=x,x0=x并且若 x , y , z ∈ { 0 , 1 } x,y,z\in\{0,1\} x,y,z{0,1},则 x & y = y & x , x ∣ y = y ∣ x , ( x & y ) & z = x & ( y & z ) , ( x ∣ y ) ∣ z = x ∣ ( y ∣ z ) x\&y=y\& x, x|y=y|x, \\(x\&y)\&z=x\&(y\&z), (x|y)|z=x|(y|z) x&y=y&x,xy=yx,(x&y)&z=x&(y&z),(xy)z=x(yz)所以 & \& & ∣ | 满足交换律和结合律。用群论的语言就是, ( { 0 , 1 } , & ) (\{0,1\},\&) ({0,1},&) ( { 0 , 1 } , ∣ ) (\{0,1\},|) ({0,1},)是一个交换幺半群(commutative monoid)。即:
( { 0 , 1 } , & ) (\{0,1\},\&) ({0,1},&)是一个交换幺半群,单位元是 1 1 1 0 0 0不可逆;
( { 0 , 1 } , ∣ ) (\{0,1\},|) ({0,1},)是一个交换幺半群,单位元是 0 0 0 1 1 1不可逆。

3、若 x , y , z ∈ { 0 , 1 } x,y,z\in\{0,1\} x,y,z{0,1},考虑分配律,我们有: x & ( y ∣ z ) = ( x & y ) ∣ ( x & z ) x ∣ ( y & z ) = ( x ∣ y ) & ( x ∣ z ) x\&(y|z)=(x\&y)|(x\&z)\\x|(y\&z)=(x|y)\&(x|z) x&(yz)=(x&y)(x&z)x(y&z)=(xy)&(xz)证明非常简单,只需要对 x x x进行考虑,再结合前面的性质就可以了。所以由上面可知,它们还互相满足分配律。

4、德摩根律: ∼ ( x & y ) = ( ∼ x ) ∣ ( ∼ y ) ∼ ( x ∣ y ) = ( ∼ x ) & ( ∼ y ) \sim (x\& y)=(\sim x)| (\sim y)\\\sim (x| y)=(\sim x)\& (\sim y) (x&y)=(x)(y)(xy)=(x)&(y)

由于位运算是把两个int的每个数的每一位单独拿出来分别对应的做运算,所以上面的性质对任意int的 x x x y y y都是成立的,但是要按照计算机里的二进制表示稍微改动一下: ∀ x ∈ Z , x & 0 = 0 , x ∣ ( − 1 ) = − 1 , x & ( − 1 ) = x , x ∣ 0 = x \forall x\in Z, x\&0=0, x|(-1)=-1, x\&(-1)=x, x|0=x xZ,x&0=0,x(1)=1,x&(1)=x,x0=x交换律结合律分配律仍然保持正确。

4、以上看出来, & \& & ∣ | 的性质还不够好,不过 ∧ \wedge 的性质就相当好了。我们有这样的结论: ( { 0 , 1 } , ∧ ) (\{0,1\},\wedge) ({0,1},)是个阿贝尔群。
证明:封闭性显然,交换律显然, 0 0 0是单位元,且两个元素的阶都是 2 2 2,也就是逆元都是自己。结合律证明如下:由于 x ∧ y = ( x & ∼ y ) ∣ ( ∼ x & y ) x\wedge y=(x\&\sim y)|(\sim x\&y) xy=(x&y)(x&y),所以: ( x ∧ y ) ∧ z = ( ( x & ∼ y ) ∣ ( ∼ x & y ) ) ∧ z = ( ( ( x & ∼ y ) ∣ ( ∼ x & y ) ) & ∼ z ) ∣ ( ∼ ( ( x & ∼ y ) ∣ ( ∼ x & y ) ) & z ) = ( x & ∼ y & ∼ z ) ∣ ( ∼ x & y & ∼ z ) ∣ ( x & y & z ) ∣ ( ∼ x & ∼ y & z ) = ( x & ( ( ∼ y & ∼ z ) ∣ ( y & z ) ) ) ∣ ( ∼ x & ( ( y & ∼ z ) ∣ ( ∼ y & z ) ) ) = ( x & ∼ ( y ∧ z ) ) ∣ ( ∼ x & ( y ∧ z ) ) = x ∧ ( y ∧ z ) (x\wedge y)\wedge z=((x\&\sim y)|(\sim x\&y))\wedge z\\=(((x\&\sim y)|(\sim x\&y))\&\sim z) |\\ (\sim((x\&\sim y)|(\sim x\&y))\& z)\\=(x\&\sim y\&\sim z)|(\sim x\& y\&\sim z)|\\(x\& y\& z)|(\sim x \&\sim y \& z)\\=(x\&((\sim y \& \sim z)|(y\& z)))|\\(\sim x\&((y \& \sim z)|(\sim y\& z)))\\=(x\&\sim (y\wedge z))|(\sim x\& (y\wedge z))\\=x\wedge (y\wedge z) (xy)z=((x&y)(x&y))z=(((x&y)(x&y))&z)(((x&y)(x&y))&z)=(x&y&z)(x&y&z)(x&y&z)(x&y&z)=(x&((y&z)(y&z)))(x&((y&z)(y&z)))=(x&(yz))(x&(yz))=x(yz)所以结合律成立。所以 ( { 0 , 1 } , ∧ ) (\{0,1\},\wedge) ({0,1},)是个阿贝尔群。

5、关于左移和右移,有两个很显然的结论: x > > 1 = x / 2 x>>1=x/2 x>>1=x/2,以及 x < < 1 = 2 x x<<1=2x x<<1=2x。这里要注意 x x x的范围,操作没有溢出的话等式是对的,否则需要仔细考虑。

6、接下来是两个常用的位运算操作:
x x x的从右向左数第 i i i位是什么( i i i 0 0 0开始计数): ( x > > i ) & 1 (x>>i)\&1 (x>>i)&1
x x x的从右向左数第 1 1 1 1 1 1出现的位置代表的数是几: l o w b i t ( x ) = x & − x lowbit(x)=x\&-x lowbit(x)=x&x。这个结论可以由 − x = ∼ x + 1 -x=\sim x+1 x=x+1得到。

7、位运算与集合构造。给定一个集合,设有 n n n个元素,那么其子集可以由一个 n n n位二进制数来表示,每一位就代表相应位置的元素是否在这个子集中。对于子集 a a a b b b,它们的并,交和对称差可以由 a ∣ b a|b ab a & b a\& b a&b a ∧ b a\wedge b ab来表示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值