《位运算及应用》PPT课件.ppt
《《位运算及应用》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《位运算及应用》PPT课件.ppt(21页珍藏版)》请在三一办公上搜索。
1、Bitwise Operation,位运算及应用,程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作,6(10)110(2)11(10)1011(2),2(10)10(2),(1)什么是位运算,a&b a and ba|b a or ba b a xor ba not aa b a shr b,C P,(2)位运算的操作符,定义两个符号#和,这两个符号互为逆运算 也就是说(x#y)y=x x-x#yy-x yx-x y,a=a+b;b=a-b;a=a-b;,a:=a xor b;a=ab;b:=a xor b;b=ab;a:=a xor b;a
2、=ab;,(3)位运算的一个简单运用,var a:word;begin a:=100;a:=not a;writeln(a);end.#include int main()unsigned short a=100;a=a;printf(%dn,a);return 0;,(4)not 操作,a:=a shl 2;a=a2;,a=10110(2);a=54465(10);,a=10110(2);a=54465(10);,(5)shl shr,去掉最后一位(101101-10110)x shr 1在最后加一个0(101101-1011010)x shl 1在最后加一个1(101101-1011011
3、)x shl 1+1把最后一位变成1(101100-101101)x or 1把最后一位变成0(101101-101100)x or 1-1最后一位取反(101101-101100)x xor 1把右数第k位变成1(101001-101101,k=3)x or(1 shl(k-1)把右数第k位变成0(101101-101001,k=3)x and not(1 shl(k-1)右数第k位取反(101001-101101,k=3)x xor(1 shl(k-1)取末三位(1101101-101)x and 7取末k位(1101101-1101,k=5)x and(1 shl k-1)取右数第k位(
4、1101101-1,k=4)x shr(k-1)and 1把末k位变成1(101001-101111,k=4)x or(1 shl k-1)末k位取反(101001-100110,k=4)x xor(1 shl k-1)把右边连续的1变成0(100101111-100100000)x and(x+1)把右起第一个0变成1(100101111-100111111)x or(x+1)把右边连续的0变成1(11011000-11011111)x or(x-1)取右边连续的1(100101111-1111)(x xor(x+1)shr 1去掉右起第一个1的左边(100101000-1000)x and
5、(x xor(x-1),(6)位运算的常见变换操作,(7)位运算的简单运用,同样假设x是一个32位整数。我们需要查找x在二进制下,1的个数。比如,初始时x为108,那么最后c就变成了4,它表示108的二进制中有4个1。,program find;var i,x,c:longint;begin readln(x);c:=0;for i:=1 to 32 do beginc:=c+x and 1;x:=x shr 1;end;writeln(c);end.,int main()int x,c=0;scanf(%d,108(10),同样假设x是一个32位整数。经过下面5次赋值后,x的值就是原数的二进
6、制表示中数字1的个数。x:=(x and$55555555)+(x shr 1)and$55555555);x:=(x and$33333333)+(x shr 2)and$33333333);x:=(x and$0F0F0F0F)+(x shr 4)and$0F0F0F0F);x:=(x and$00FF00FF)+(x shr 8)and$00FF00FF);x:=(x and$0000FFFF)+(x shr 16)and$0000FFFF);我们下面仅说明这个程序是如何对一个8位整数进行处理的。,211(10),(4)(3)(2)(1),$55555555,$55555555,x,x
7、shr 1,整个程序是一个分治的思想。第一次我们把每相邻的两位加起来,得到每两位里1的个数,比如前两位10就表示原数的前两位有2个1。第二次我们继续两两相加,10+01=11,00+10=10,得到的结果是00110010,它表示原数前4位有3个1,末4位有2个1。最后一次我们把0011和0010加起来,得到的就是整个二进制中1的个数。程序中巧妙地使用取位和右移,比如第二行中$33333333的二进制为,用它和x做and运算就相当于以2为单位间隔取数。shr的作用就是让加法运算的相同数位对齐。,x,第一次运算结果,第二次运算结果,第三次运算结果,vijos P1578 渡河 2描述 Descr
8、iptionJohn住在Alaska,他要渡过一条很宽的河流去往一个临近的城市.John当然首先驾驶狗拉的雪橇来到河边,当然也拖来一条有三个座位的小船;随后他把船放进水中,设法将自己和所有的狗都摆渡到对岸.不过这件事远非想象中那么简单:因为有些狗相互之间有敌意,如果主人不在,它们很容易打起来,于是这些狗不能同时留在同一侧河岸.幸好John很了解他的狗,知道哪些狗之间是有敌意的.有一天John带了5条狗出门:Hurricane,Bear,Wonder,Angry one,和Argot.Bear 对Hurricane,Angry one,以及Argot都有敌意.Wonder 则不能与Hurrica
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 位运算及应用 运算 应用 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5627743.html