C语言程序设计 第10章 位运算.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计 第10章 位运算

第10章 位运算 本章内容包括: 位运算符和位运算; 位运算应用。 1. 在汇编语言中,有这样一种操作:在计算机的8086CPU系统中,AL寄存器中存放着03H(H表示是十六进制数) ,BL寄存器中存放着04H ,现在想将两个寄存器中的数合并存放到AL寄存器中,合并后AL寄存器中存放的是34H ,用C语言能实现汇编语言的功能吗 (寄存器:CPU中暂时存放操作数的存储电路,AL和BL 均为8位的寄存器 )? 10.1 位运算符与位运算 C提供的6种位运算符: 、|、^、~、、 位运算符优先级别: 见图10-1 10.1.1按位与( ) 1. 运算规则: 将其两数据对应的二进制位按位进行“与”运算, 二者全为1结果为:1,否则为:0。 例如: 35 =1 2. 用途 : 要想将一个数a某一位清0,就与一个数b进行 运算,b数在该位取 0; 要想将一个数a某一位保留下来,就与一个数b进行 运算,b数在该位置 1; 要想将一个数a某些位保留下来,就与一个数b进行 运算,b数在这些位全置为1 ,不想要的位全置为 0 ,即可。 例如:有一个整数a (2 个字节),想要保留低字节,高字节全清0,如何实现? 可以让 a 与b= 0377进行 按位与运算 #include stdio.h main() { int a = 026254; int b=0377; int c = a b ; printf(“(o) %o\t(d) %d\n” , c , c ); } /*按八进制输出*/ 10.1.2按位或( | ) 1. 运算规则: 如果两个运算量相应二进制位有一个为1 ,则该位结果为1 ,否则为 0 ; 2. 用途: 与 0 进行按位或运算,各位数不变;与1 进行按位或运算,均变为1。 例如: 3 | 5 =7 10.1.3按位异或( ^ ) 1. 运算规则: 如果两个运算量相应二进制位相异( 即一位为1 ,一位为0)则该位为1 ,相同( 即两位均为1 或均为0) 则该位为0 。 2. 用途 : 与 1 相异或 ,翻转 ;与 0 相异或 ,保留原值。 例如: 3 ^ 5 = 6 3. 交换两个值,不用临时变量 例如:a=3 ,b=4 执行 “a=a^b; b=b^a;a=a^b; “ 后 ,a , b 值交换 ; 10.1.4 按位取反( ~ ) 1. 运算规则: 对一个二进制数按位取反,即将0变1 ,1变0 ; 2. 用途 : ~1 ,高位全部为1 ,只末位为 0 ,再与其他数字进行其他位运算; ~ 0 , 所有位全部为1 ,再与其他数字进行其他位运算; 例如:若一个整数a=56,为16位,想使最低位为0 ,其余位不变,可以用 a = a 0177776 ; 也可以写成 a = a ~ 1 ; 10.1.5左移位( ) 1. 运算规则: 将一个数的各二进制位全部左移指定位;如 a=a 2 ; 高位左移后舍弃,低位补0。 所以,左移1位相当于该数乘以2,左移2位相当于该数乘以4; 但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。 2. 用途: 常用来控制使一个数字迅速以2的倍数扩大; 例如: #include stdio.h main() { int a; scanf(%d,a); printf(\na=%d\ta1=%d\n,a,a1); printf(\na=%d\ta2=%d\n,a,a2); } 当分别输入64,127,8000,32767时,运行结果如何? 运行结果: 10.1.6右移位( ) 1. 运算规则: 将一个数的各二进制位全部右移指定位;如 a=a 2 ; 低位右移后舍弃,高位补符号位;(即符号位 为1 ,补1,符号位为0,补0) 所以,右移1位相当于该数除以2,右移2位相当于该数除以4; 2 用途: 常用来控制使一个数字迅速以2的倍数缩小; 例如: #include stdio.h main() { int a; scanf(%d,a)

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档