- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 位运算 11.1 位运算符 11.2 位运算符的运算功能 11.3 位段 习题11 11.1 位运算符 计算机中的位运算是针对二进制代码进行的。每一个二进制位的取值只有0或1。位运算符的操作对象是一个二进制位的集合,如一个字节(8 bit)。 位运算符共有6种,即 ~、、、、| 和 ^,分别表示按位取反、左移位、右移位、按位与、按位或和按位异或,见表11-1所示。 移位运算符是将一个数的二进制位向左或向右移若干位。每向左移一位,就相当于对操作对象乘以2;每向右移一位,就相当于对操作对象除以2。向左移位时,右边补0,高位溢出舍弃不用;向右移位时,对无符号数左边补0。在C语言中,对有符号数,若该数为正,则左边补0;若该数为负,则左边补1。 11.1.1 按位取反 求反运算符“~”为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如,~9的运算为 ~(0000 0000 0000 1001)=1111 1111 1111 0110 即将其操作对象中的所有二进制位全部改变状态,即“逢0变1,逢1变0”。 又如,八进制数0217(即二进制数1000 1111),其按位取反后为八进制数0160(即二进制数0111 0000),即 ~ 1000 1111 0111 0000 11.1.2 移位 移位运算符有左移运算符和右移运算符两种。 1. 左移运算符 左移运算符“”是双目运算符。其功能是将一个数的各二进制位全部左移若干位(左丢弃,右补0),由“”右边的数指定移动的位数。 左移运算符的一般书写格式为 表达式1 表达式2 其中,“表达式1”是被左移的对象,“表达式2”给出左移的位数。例如: a=1; a=a2; 将a的二进制数左移2位,右补0。此时a的值为4。 若左移时舍弃的高位不包含1,则数每左移一位,相当该数乘以2。 2. 右移运算符 右移运算符是将其操作对象向右移动指定的位数,每右移1位相当于除以2,移n位相当于除以2的n次方。在进行右移时,右边移出的二进制位被舍弃。 右移运算符的一般书写格式为 表达式1 表达式2 其中,“表达式1”是被右移的对象,“表达式2”给出右移的位数。例如: a=15; a=a2; 示把0000 1111右移为0000 0011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。 11.1.3 按位与 按位与运算符“”是双目运算符。其功能是参与运算的两数各对应的二进位相与。参与运算的数以补码的方式出现。 按位与的一般书写格式为 表达式1 表达式2 其中,“表达式1”和“表达式2”均为整型表达式。 按位与的运算原则为:当两个操作对象的相应二进制位都为1时,则该位的结果为1,否则为0,即“两1为1,其余为0”。 但要注意,按位与运算时,两个表达式之间用“”符号,而逻辑与时,两个表达式之间用“”符号,所以,一定要注意不要弄错。 例如,115可写成算式如下: 0000 1011 0000 0101 0000 0001 所以,115的值为1。 按位与运算通常用来对某些位清0或保留某些位。例如把a的高八位清0,低八位保留,可作a255运算(255的二进制数为0000 0000 1111 1111)。 【例11-1】右移运算符和按位与运算符举例。 #include stdio.h main( ) { unsigned a,b; printf(input a number: ); scanf(%d,a); b=a5; /* a右移5位,将右移后的值赋给b */ b=b15; /* 将b和15按位与的值赋给b */ printf(a=%d\tb=%d\n,a,b); } 运行结果: input a number: 255 a=255 b=7 【例11-2】利用按位与来获取指定位的值。 假设x是一般的unsigned类型的整型数(2个字节),现在需要获取其低字节的值,这时,只需将x与0377相与即可。例如: y = x 0377 式中,x的二进制表示为0101 0001 0111 001
您可能关注的文档
- 第一讲:国际金融概论案例.ppt
- 第一讲:如何让幼儿喜欢上幼儿园?案例.ppt
- 第11章电磁感应案例.ppt
- 第一讲:审计职业案例.ppt
- 第11章电子政务发展趋势案例.ppt
- 第11章纺织标准基础知识案例.ppt
- 第11章公司债券定价案例.ppt
- 第一讲:中国特色社会主义理论与实践概论案例.ppt
- 第11章供应链的组织与运行管理案例.ppt
- 第一讲__风机基础知识案例.ppt
- 解密13 文学类文本群文阅读之双文短评(分层训练)(原卷版).docx
- 黄金卷02-【赢在高考·黄金8卷】备战2023年高考语文模拟卷(北京专用)(考试版).docx
- 黄金卷02-【赢在高考·黄金8卷】备战2024年高考语文模拟卷(北京专用)(解析版).docx
- 黄金卷01-【赢在高考·黄金8卷】备战2024年高考语文模拟卷(广东专用)(考试版).docx
- 考点巩固卷06 内容理解(原卷版).docx
- 高三语文10月月考卷(一)-2024年高考语文一轮复习仿真模拟卷(全国通用)原卷版.docx
- 考点巩固卷08 意蕴探究(原卷版).docx
- 解密09 文学类文本阅读散文之概括要点(讲义)(原卷版).docx
- 高三语文11月月考卷(一)-2024年高考语文一轮复习仿真模拟卷(全国通用)(解析版).docx
- 黄金卷01-【赢在高考·黄金8卷】备战2024年高考语文模拟卷(全国通用)(解析版).docx
文档评论(0)