付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、= 1. and 运算 =and 运算通常用于二进位操作,例如一个数 and 1 的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为 0表示该数为偶数,最末位为 1 表示该数为奇数。相同位的两个数字都为 1,则为 1;若有一个不为 1,则为 0。 0011111100(&;或者 and)- 00100= 2. or 运算 =or 运算通常用于二进制特定位上的无条件赋值,例如一个数 or 1 的结果就是把二进制最末位强行变成 1。如果需要把二进制最末位变成 0,对这个数 or 1 之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。相同位只要一个为 1 即为
2、1。 0011111100(|或者 or)- 11111= 3. xor 运算 =异或的符号是。xor 运算通常用于对二进制的特定一位进行取反操作,因为异或可以这样定义:0 和 1 异或 0 都不变,异或 1 则取反。xor 运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。xor 运算可以用于简单的加密,比如对我 MM 说 1314520,但怕别人知道,于是双方约定拿生日 19880516 作为密钥。1314520 xor 19880516 = 20665500,我就把 20665500 告诉 MM。MM再次计算 20665500 xor
3、19880516 的值,得到 1314520,于是她就明白了我的企图。相同位不同则为 1,相同则为 0。 0011111100各种位运算的使用x yx-x xx# y yy执行了第一句后 x 变成了 x # y。那么第二句实质就是 y - x # y y,由于#和互为逆运算,那么此时的 y 变成了原来的 x。第三句中 x 实际上被赋值为(x # y) x,如果#运算具有交换律,那么赋值后 x 就变成最初的y 了。这三句话的结果是, x 和 y 的位置互换了。加法和减法互为逆运算,并且加法满换律。把#换成+,把换成-,可以写出一个不需要临时变量的 swap 过程(Pascal)。procedur
4、e swap(vara,b:longbegin);a:=a b:=a a:=aend;+-b;b;b;好了,刚才不是说 xor 的逆运算是它本身吗?于是起来非常诡异的 swap 过程:就有了一个看procedure swap(vara,b:longbegin);a:=a b:=a a:=aend;xor xorxorb;b;b;注意:位运算版本的交换两数不适用于一个数的自我交换。也就是说,如果上述程序的“b”改成“a”的话,其结果是变量 a 变成零。因此,在使用快速排序时,由于涉及到一个数的自我交换,因此如果要在其中使用位运算版的交换两数的话,应该先判断。具体的时间损耗在此略过。= 4. no
5、t 运算 =not 运算的定义是把内存中的 0 和 1 全部取反。使用 not 运算时要格外,你需要注意整数类型有没有符号。如果 not 的对象是无符号整数(不能表示负数),那么得到的值就是它与该类型上界的差,因为无符号类型编辑本段运算结果(或者 xor)- 11011和 shl 相似,a shr b 表示二进制右移 b 位(去掉末 b 位),相当于 a除以 2 的 b 次方(取整)。也经常用 shr 1 来代替 div 2,比如二分查找、堆的操作等等。想办法用 shr 代替除法运算可以使程序效率大大提高。最大公约数的二进制算法用除以 2 操作来代替慢得出奇的 mod 运算,效率可以提高 60
6、%。的数是用 00 到$F 依次表示的。下面的两个程序(仅语言不同)均返回65435。var a:word; begin a:=100;a:=not a; wrin(a); end.#include main()unsigned short a=100; a = a;prf( %dn,a ); return 0;如果 not 的对象是有符号的整数,情况就不一样了,稍后会在“整数类型的”小节中提到。= 5. shl 运算 =a shl b 就表示把 a 转为二进制后b 位(在后面添 b 个 0)。例如 100 的二进制为 1100100,而 110010000 转成十进制是 400,那么 100 shl 2= 400。可以看出,a shl b 的值实际上就是 a 乘以 2 的 b 次方,因为在二进制数后添一个 0 就相当于该数乘以 2。通常认为 a shl 1 比 a * 2 更快,因为前者是更底层一些的操作。因此程序中乘以 2 的操作请尽量用一位来代替。定义一些常量可能会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年互联网医疗行业发展报告及2023-2028年市场规模分析
- 2026年数字化财税解决方案行业报告
- 2026年时尚产业报告:C2M反向定制对品牌与消费者的影响分析
- 2026年新能源汽车产业链政策环境及影响报告
- 2026年消防设备行业市场竞争格局分析报告001
- 2026年流变仪行业分析报告及创新报告
- 2026年家居行业报告:合规设计与市场趋势
- 2026年旅游地产行业报告:旅游度假地产市场分析与发展趋势
- 2026年5G基站建设行业报告及市场前景预测
- 2026年苯甲酸行业商业模式创新报告
- 2026年机动车检测站检验检测引车员上岗培训试题附答案
- 2026固体饮料跨境电商发展模式及海外市场机遇研究报告
- 2026年高中学业水平合格性考试信息技术试卷试题(含答案详解)
- 2026年浙江名校协作体9月高三语文开学考作文写作指导及范文:越来越多的人追求自在独处
- 2026新教材语文 19 航天员写给孩子的信 教学课件
- 2026年《烟草专卖法实施条例》知识考试题库及答案
- 2026年熔化焊与热切割必刷200题(有一套)附答案详解
- 2026中国监护仪产品注册申报策略与法规应对指南
- 航天科工集团在线测评题真题
- 文化旅游演艺服务质量不高问题整改措施报告
- 《数字视频编辑与制作》全套教学课件
评论
0/150
提交评论