第A篇-位运算.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第A章 位运算 一. 位运算符与位运算 运算符 --- 按位与 运算符 | --- 按位或 运算符 ^ --- 按位异或(或称XOR) 运算符 --- 左移 运算符 --- 右移(续) 运算符总汇 二. 位运算举例 例A.2 三. 位段 位段 位段(续) 练习 练习(续) * 第A章 位运算 位运算符: 优先级与结合方向 优先级高 优先级低 定义: 对二进制位的操作称为位运算. “位”(bit——比特) 作为信息的最小单位, 用于存放开关量, 可节约存储空间. 如一个字节可存放8个开关量; 位取反 ~ 左移 右移 按位与 按位异或 ^ 按位或 | 单目,右结合 双目, 左结合 总体优先级: ~ ! 算术 运算符 ^ | () [ ] - . 关系 运算符 逻辑 运算符 优先级高 优先级低 运算规则: 0 0 = 0; 0 1 = 0; 1 0 = 0; 1 1 = 1; 例: 18 5 0001 0010 0000 0101 0000 0000 运算符的主要作用: 将一个数的指定几位清零, 其它位不变. 如将75 (0100 1011)的低3位清零. 可 1111 1000, 得: 0100 1011 1111 1000 0100 1000 取一个数的指定几位. 如取75 (0100 1011)的低4位. 可 0000 1111, 得: 0100 1011 0000 1111 0000 1011 第A章 位运算 例: 将整数a的第0位变成0, 其它位不变. 如, 要使12 (0000 1100)的第0,2,4位变成1, 可同0001 0101 按位或, 得: 0000 1100 | 0001 0101 0001 1101 注意与逻辑非( ! )的区别: 设 int a=5; 则 !a ? 0; 而 ~a ? (1111 1111 1111 1010)2 运算规则: ~0 = 1; ~1 = 0; 若a是2字节, 可用 a 0xfffe; 若a是4字节, 可用 a 0xfffffffe; 这样做不利于程序移植, 可用 a (~1); 对于16位系统, 相当于a 0xfffe; 32位系统, 相当于a 0xfffffffe; 运算规则: 0 | 0 = 0; 0 | 1 = 1; 1 | 0 = 1; 1 | 1 = 1; | 运算符的用途: 将一个位串的指定几位置为1, 其它位不变. 运算符 ~ --- 按位取反(单目、右结合) 第A章 位运算 交换两个变量的值而不用临时变量. ^ 运算也可这样表示: a^b ?? ((~a)b) | (a(~b)) 1011 0110 ^ 0000 1111 1011 1001 ^ 运算符的用途: 运算规则: 0 ^ 0 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0; a ^ 0 ≡ a; a ^ (~0) ≡ (~a); 将一个位串的指定几位翻转. 如, 要使a=1011 0110 的低4位翻转, 其它位不变, 则: 如, a=3, b=4, 则: a=a^b; b=b^a; a=a^b; 得: a=4, b=3; 事实上, 对二进制位p, q, 有: 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 p= p^q q= q^p p= p^q q p 运算结果使p, q的值交换. a=a^b 0011 ^ 0100 0111 b=b^a 0100 ^ 0111 0011 a=a^b 0111 ^ 0011 0100 第A章 位运算 格式: a n 作用: 将位串a的各个位向左移n位, 左移后右端补0, 左端的位被 移出后丢失. 例: a=6 (0000 0000 0000 0110)2, a 1后变成: 一个整数(正或负)左移1位, 相当于该数乘以2 (如果没有导致溢出) ! 0 0000 0000 0000 1100 丢失 结果为 12. 运算符 --- 右移 格式: a n 作用: 将位串a的各个位向右移n位, 右移后右端的位被移出丢失. 左端有两种补法: 0或1, 因此, 分成两种移法: 逻辑右移: 左端总是补0 如, a=(1100 0010 1011 0110)2 ,则 a 1 后变成: 0110 0001 0101 1

文档评论(0)

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

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

1亿VIP精品文档

相关文档