(14)--11.第十一章 位运算及其应用.ppt

(14)--11.第十一章 位运算及其应用.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 11.1 位运算操作符及其使用方法 11.2 位运算应用实例 第十一章 位运算及其应用 11.3 位段** 计算机存储信息的基本单位是字节(Byte),最小可操作单位是位(bit)。解决某些实际问题时,需要按字节或按位处理信息 C语言提供了bit级操作。 结合高级语言特征和其他低级语言功能,C语言常常成为编写设备驱动程序和嵌入式代码的首选语言 1.1 位运算操作符及其使用方法 运算符 功能 优先级 结合性 ~ 按位非 高 低 左?右 左移 左?右 右移 左?右 按位与 左?右 ^ 按位异或 左?右 | 按位或 左?右 说明: 只有~为单目运算符 位运算只能用于整型或字符型数据 位运算符可以与赋值运算符结合组成扩展的赋值运算,即~=,=,=,=,^=,|= 两个长度不同的数据进行位运算时,系统先将二者右端对齐,然后将短的一方进行扩充。对无符号数,按无符数则以0扩充;对有符号数,按符号扩充 1. 按位与运算符 表11-1 逻辑与操作运算规则 n1 n2 n1n2 0 0 0 0 1 0 1 0 0 1 1 1 11.1.1 位运算符的基本运算规则 注意:区别和操作 注意:对整型变量num 完成高字节清零可用num0xff 完成低字节清零可用num0xff00(147)10 )(61)10(17)10 表11-2 逻辑或操作运算规则 n1 n2 n1|n2 0 0 0 0 1 1 1 0 1 1 1 1 2. 按位或运算符|0x93 |)0x3D 0xCF 注意: 要使num的低字节全置1,用num|0xff 要使num的高字节全置1,用num|0xff00 表11-3 逻辑异或操作运算规则 n1 n2 n1^n2 0 0 0 0 1 1 1 0 1 1 1 0 3. 异或运算符^0x93 ^)0x3D 0xAE 注意:对整数n1和n2 如果n1和n2值相等,n1^n2==0 取n1值并使低位翻转,用n1^0xff 取n1值并使高位翻转,用n1^0xff00 相同为0不同为1 4. 按位非操作~ 按位取反:即0变成1,1变成0。 注意: 按位非是单目运算符 ~x不是求x的负数 例如: ~1的结果不是-1。 ~1=? ~8=? 例如: 设num=2 ,则~num=2 。 1 0 0 1 0 0 1 1 5. 逻辑左移 将其左侧操作数按位左移其右侧操作数值代表的位数后产生一个新值。左移之后右边空出的bit位用0填充 例如: 对num=2,num=2操作后的num值为2 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 6. 逻辑右移 将其左侧操作数按位右移其右侧操作数值代表的位数后产生一个新值。 如果原操作数是无符号数,右移后左边空出的位以0填充;否则,以符号位填充。 例如: 对无符号数num=2,num=2的结果为2。 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 例11-1 如果看作有符号数,结果为2。 #define MASK 2 /*MASK=2*/ …… flag=flagMASK; 11.1.2 位运算符应用基础 1. 掩码技术(Mask) 用一个二进制bit串来覆盖另一个二进制串bit串,使被覆盖者保持某种性质的技术 使某个二进制位串保持某种特征 指定某个二进制位的0/1状态 取flag的第2个bit位或者屏蔽掉除第2个bit位以外的位 #define MASK 2 …… flag=flag|MASK; 2. 位的打开 打开位串中的特定位而保持其他位不变 将flag的第2个bit位置1,其余位保持不变 3. 位的关闭 将指定位赋予0值而不影响其他位操作。 #define MASK 2 …… flag=flag~MASK 关闭掉flag中的第2个bit位 4.位的翻转 对指定位的状态进行求反操作。 #define MASK 2 …… flag^=MASK; 使flag的第2位

文档评论(0)

185****8578 + 关注
实名认证
内容提供者

热爱教育,专注于教育领域创作与分享。

1亿VIP精品文档

相关文档