ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

位运算与代数结构

2020-01-25 09:37:48  阅读:286  来源: 互联网

标签:wedge 代数 运算 xxx 111 结合律 sim 结构


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

1、x+x=1x+\sim x=-1x+∼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,x1=1,x&1=x,x0=xx\&0=0, x|1=1, x\&1=x, x|0=xx&0=0,x∣1=1,x&1=x,x∣0=x并且若x,y,z{0,1}x,y,z\in\{0,1\}x,y,z∈{0,1},则x&y=y&x,xy=yx,(x&y)&z=x&(y&z),(xy)z=x(yz)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)所以&\&&和|∣满足交换律和结合律。用群论的语言就是,({0,1},&)(\{0,1\},\&)({0,1},&)与({0,1},)(\{0,1\},|)({0,1},∣)是一个交换幺半群(commutative monoid)。即:
({0,1},&)(\{0,1\},\&)({0,1},&)是一个交换幺半群,单位元是111,000不可逆;
({0,1},)(\{0,1\},|)({0,1},∣)是一个交换幺半群,单位元是000,111不可逆。

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

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

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

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

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

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

edWard的算法世界 发布了93 篇原创文章 · 获赞 0 · 访问量 1584 私信 关注

标签:wedge,代数,运算,xxx,111,结合律,sim,结构
来源: https://blog.csdn.net/qq_46105170/article/details/104082406

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有