第十一章 位运算人民邮电 管银枝主篇.ppt

第十一章 位运算人民邮电 管银枝主篇.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章 位运算人民邮电 管银枝主篇

第十一 位运算 C语言既具有高级语言的特点,也具有低级语言的特点。本节所讲的位运算就具有低级语言的特点,并被广泛用于对底层硬件、外围设备的状态检测和控制。 计算机真正执行的是由0和1信号组成的计算机指令,数据也是以二进制形式表示的。因此最终要实现计算机的操作,就要对这些0和1进行操作。每一个0和1的状态称为一个“位”(bit)的状态。有了位运算,C语言就能编写出直接对计算机硬件进行操作的程序。 本章主要内容 11.1 位运算及位运算符概述 11.2 位运算 11.3 位域 11.4 位运算应用举例 11.1位运算及位运算符概述 11.1.1 位运算概述 所谓位运算是指对操作数以二进制位(bit)为单位进行的数据处理。每一个二进制位只能存放1位二进制数“0”或“1”,因此位运算符的运算对象是一个二进制数位的集合。 通常把组成一个数据的最右边的二进制位称作第0位,从右向左依次称为第1位,第2位,…,最左边一位称作最高位。 11.1.2位运算符位的种类 C语言中,位运算包括逻辑位运算和移位位运算。 1、逻辑位运算分为四种:位反、位与、位或、位异 2、移位位运算分为二种:左移与右移。 在c语言中的移位不是循环移动,经过移位后一端的位被“挤掉”,而另一端空出的位补0。 3、位复合赋值运算符 类似于算术的复合运算符,位运算符和赋值运算符也可以构成复合赋值运算符。 4、关于位运算符的几点说明 (1)在逻辑位运算中,~的优先级高于算术运算符、关系运算符、逻辑运算符, 其他位运算符则低于关系运算符、高于逻辑运算符。 (2)参加位运算的操作数必须是整型或字符型数据(常量或变量),不能是其它类型的数据。 (3)两个长度不同的数据进行位运算时,系统先将两者的右端对齐,短的运算对象若是有符号数则按符号位扩展,若是无符号数则以“0”扩充。 (4)位运算符的优先级如下:按位取反运算符“~”的优先级最高,高于所有的双目运算符;其次是左移运算符““和右移运算符“”,其优先级高于关系运算符;最低的是按位与“”、按位异或“∧”和按位或“|”运算符,其优先级低于关系运算符。 (5)除了按位取反运算符“~”的结合方向是自右至左外,其余位运算符的结合方向都是自左至右 (6)位运算符和逻辑运算符很相似,要注意区别。关系运算和逻辑运算的结果只能是1或0,而按位运算的结果不一定是1或0,还可以是其它数。 11.2 位运算 任务提出:如何统计一个字符对应的ASCII码中1的个数? 任务分析:此问题首先要从键盘输入一个字符,然后统计出该字符对应的ASCLL码值转换成二进制后1的个数。 解决此问题的难点在于如何判断该字符对应ASCII码值转换成二进制后每个位上的数字是0还是1。 设从键盘输入的字符用ch表示,该问题需对字符ch的ASCII码的每一位进行测试,判断是0还是1。方法是:设置一个屏蔽字与ch进行“”运算,从而取所需的某位的状态(0或1)。从高位开始,第8位所需设置的屏蔽字mask为0x80,即二进若chmask的结果为0,则说明ch的第8位为0,否则为1。第7位所需设置的屏蔽字mask为0x40,即将mask右移一位。如此一直下去,直到结束。 #include stdio.h main() { char ch; int mask,i,count=0; printf(请输入一个字符:); ch=getchar(); printf(该字符的ASCII是%d\n,ch); mask=0x80; for(i=0;i8;i++) { if((chmask)!=0) count++; mask=1; } printf(ASCII中1的个数有: %d\n,count); getch(); } 11.2 1 按位取反运算 按位取反运算是用来对二进制按位进行取反运算,是单目运算符。按位取反运算符用“~”表示。按位取反运算符是位运算中惟一的单目运算符,运算对象应置于运算符的右边。 1、按位取反运算的运算规则 按位取反运算的运算规则:把运算对象的内容按位取反,将每一位上的0变1,1变0。 即~0=1,~1=0。 例如:对十六进制数32进行取反。 ~0 0 1 1 0 0 1 0=1 1 0 0 1 1 0 1 结果为1 1 0 0 1 1 0 1。 又如: a=0000 0000 0000 1011,则表达式~a的值为1111 1111 1111 0100。 unsigned char a,b; /*定义两个无符号字符型

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档