- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 位运算 9.0 引例 9.1 位运算概述 9.2 位运算 9.3 位域 9.4 复习指南 9.0 引例 【引例】从键盘输入一个正整数,判断此数是奇数还是偶数。 程序代码 #include stdio.h main() { int x; while (1) { printf(\n please input a number: ); scanf(%d,x); if(x0) break; } if((x0x01)==0) /*判断最后一位是0还是1* / printf(%d is a even number. ,x); else printf(%d is a odd number.,x); } 9.1 位运算概述 9.1.1 位运算 所谓位运算,是指对一个数据的某些二进制位进行的运算。 1.位运算符 2.位复合赋值运算符 9.2 位运算 9.2.1 按位与运算 运算规则是:00=0,01=0,10=0,11=1 例如:106可写算式如下。(10的二进制补码) (6的二进制补码) (1的二进制补码) “按位与”运算的应用主要为: 按位清零 测试指定位的值 获取指定位的值 (1)按位清零:只要把需进行清零位与0进行“按位与”操作,其余与1进行“按位与”操作。 【例9-1】把整型变量a的高八位清0,保留低八位。 可把a和一个高八位为0,低八位为1的数进行按位与运算。 ******* 0000000011111111 0000000000001101 程序代码: main() { int a=268,b=255,c; /*b的高八位为0,低八位为1*/ c=ab; printf(a=%d,b=%d,c=%d\n,a,b,c); } 运行结果: a=268,b=255,c=13 (2)测试指定位的值 要判断某一指定位的值是否为1(或0),只需将这一位与1(或0)进行“按位与”运算,然后判断结果是否为0即可。 【例9-2】设x是一个字符型变量(8位二进制位),判断x的最低位是否为1。 可把x与0x01进行“按位与”操作,如果结果为1则x的最低位是1。 x = ******** ??? ? 0000000* (3)获取指定位的值 要想获得某些位的值,只需将这些位与1“按位与”操作,其余与0“按位与”操作。 【例9-3】设x是整型变量(16位二进制数),要想获取x的低8位,可做运算x0x00ff。运算过程为: x=**************** 0000000011111111 ******* 【例9-4】将一个十进制数转化为二进制数输出。 程序代码: main() { int i,bit; /* 定义循环变量i和位标志变量bit */ unsigned int n,maskword; /* 定义欲转换的整数n和屏蔽字变量maskword */ maskword=0x8000; /* 初始屏蔽字1000,0000,0000,0000,从左边最高位开始检测 */ printf(Enter a integer:); /* 输入要转换的整数 */ scanf(%d,n); printf(binary of %u is:,n); for(i=0; i16;i++) /* 循环检查16位,并输出结果*/ { if(i%4==0i!=0)printf(,); /* 习惯上2进制每4位用,分隔以便查看*/ bit=(nmaskword)?1:0; /* nmaskword非0,该位为1;否则该位为:0 */ printf(%d,bit); /* 输出1或0 */ maskword=maskword1; /* 右移1位得到下一个屏蔽字 */ } printf(\n); } 9.2.2 按位或运算 运算规则是:0|0=0,0|1=1,1|0=1,1|1=1 按位或运算的主要应用为:按位置1。 按位置1:只要把需进行置1的位与1进行“按位或”操作,其余与0进行“按位或”操作。 【例9-5】设x是一个整型变量,现要求将x的低8位置1。 x= **************** | 0000000011111111
文档评论(0)