- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 位运算 第11章 位运算 位运算是一种将运算对象按二进制位进行操作的运算。位运算不允许只操作其中的某一位,而是对整个数据按二进制位进行运算。 位运算只适用于字符型和整型数据以及它们的变体, 对其它数据类型不适用。其运算结果仍是整型数据。 位运算符有位逻辑运算符、位移位运算符和位复合赋值运算符等三种。 11.1 位逻辑运算 位逻辑运算符是将数据中每个二进制位上的“0”或“1”看成逻辑值,逐位进行逻辑运算的运算符。位逻辑运算符分为按位非(取反)、按位与、按位或和按位加(按位异或)四种。“非”是单目前缀运算符,其余三种都是双目运算符。 位逻辑运算符的运算对象、运算规则与结果、结合性如表11-1所示。 11.1 位逻辑运算 表11-1 位逻辑运算符 11.1 位逻辑运算 11.1 位逻辑运算 11.1.1 按位与运算 11.1.2 按位或运算 | 11.1.3 按位异或运算 ^ 11.1.4 按位取反运算符~ 11.1.1 按位与运算 按位与是对两个运算量相应的位进行逻辑与,“”的运算规则与逻辑与“”相同。即:只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式表示。 【例11-1】设a、b均为无符号短整型变量: a为0111(对应二进制数为0000000001001001) b为0123(对应二进制数为0000000001010011),求a&b=? 11.1.1 按位与运算 【例11-2】用按位与运算屏蔽特定位(指将特定位清零)。 设有一个8位二进制数n=2,请屏蔽其高4位,低4位不变。 【分析】如果要将一个二进制数中的某些特定位屏蔽(清零),则需构造一个和原数位数相等的新二进制数,将原数中需要清零的位,在新数中将相应位写成0,原数中不需要清零的位,在新数中将相应位写成1,然后将原数和构造得到的新数相与,即可完成对原数中特定的二进制位清零。 据此,构造新数:m=2 ,计算n=nm即可。过程如下: 11.1.2 按位或运算 | 按位或是对两个运算量相应的位进行逻辑或操作,其运算规则与逻辑或“||”相同。也就是两个相或的二进制数中,只要有一个为1,其结果必为1,否则为0。 【例11-4】设a、b均为无符号短整型变量: a为0111(对应二进制数为0000000001001001) b为0123(对应二进制数为0000000001010011),求a|b=? 11.1.3 按位异或运算 ^ 按位异或运算的规则是:两个运算量的相应位值相同,则结果为0,值相异则结果为1。 【例11-6】设a、b均为无符号短整型变量: a为0111(对应二进制数为0000000001001001) b为0123(对应二进制数为0000000001010011),求a^b=? 11.1.3 按位异或运算 ^ 【例11-7】使特定位翻转。 设有a想使其高4位翻转(即1变为0,0变为1),低4位不变,可以将它与b行∧运算,即a=a^b 11.1.3 按位异或运算 ^ 【例11-9】不用临时变量,交换两个变量的值。 假如a=(110)2,b=(100)2。若想将变量a和b的值互换,可以用以下赋值语句实现: 11.1.4 按位取反运算符 ~ 按位取反运算运算规则是将二进制表示的运算对象按位取反,即将1变为0,将0变为1。 【例11-11】设a为无符号短整型变量,a值为0111(对应二进制数为0000000001001001),求~a=? ~a的值为0177666(对应二进制数为1111111110110110),a不变。 11.2 移位运算 移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。移位运算符分为左移和右移两种,均为双目运算符。运算符左边的运算对象是被左移或右移的数据,而运算符右边的运算对象是指明移动的位数。 左移、右移运算表达式的一般形式为: 左移:a n 右移:a n 其中a为移位运算对象,是要被移位的量;n是要移动的位数。 11.2 移位运算 移位运算符的运算对象、运算规则与结果、结合性 11.2 移位运算 移位运算的用途 ①左移1位相当于该数乘以2,左移2位相当于该数乘以22=4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64时,左移一位时溢出的是0,而左移2位时,溢出的高位中包含1。左移比乘法运算快得多,有些C编译程序自动将乘2的运算用左移一位来实现,将乘2n的幂运算处理为左移n位。 移位运算的用途 【例11-12】设无符号短整型
您可能关注的文档
- C++程序设计案例教程 刘玉山 第5章 函数新.ppt
- C++程序设计案例教程 刘玉山 第7章继承新.ppt
- C++程序设计案例教程 刘玉山 第8章多态新.ppt
- C++程序设计案例教程 刘玉山 第9章流新.ppt
- C++程序设计与应用 周仲宁 1 courseware1新.ppt
- C++程序设计与应用 周仲宁 1 courseware3新.ppt
- C++程序设计与应用 周仲宁 1 courseware4新.ppt
- C++程序设计与应用 周仲宁 1 courseware6新.ppt
- C++程序设计与应用 周仲宁 1 courseware7-1新.ppt
- C++程序设计与应用 周仲宁 1 courseware7-2新.ppt
最近下载
- 山东科学技术版劳动实践指导手册二年级全册教学设计教案.doc
- 2025至2030年中国淫羊藿提取物行业市场竞争态势及发展前景研判报告.docx
- chiavi del Quaderno degli esercizi新视线意大利语初级练习册答案.pdf VIP
- 主、被动防护网施工组织设计方案.docx VIP
- 山东科技出版社劳动实践指导手册二年级第1课清洁与卫生小件衣物清洗洗内衣 教案.doc VIP
- 山东科技出版社劳动实践指导手册二年级第2课清洁与卫生小件衣物清洗洗袜子 教案.doc VIP
- 机械制图(第二版)全套PPT课件.pptx
- 剑桥英语PET真题标准版二.docx VIP
- 大学生国情社会调查报告.docx VIP
- 2025中国移动通信集团重庆有限公司社会招聘笔试备考题库及答案解析.docx VIP
文档评论(0)