C语言程序设计课件位运算

上传人:宝路 文档编号:48375195 上传时间:2018-07-14 格式:PPT 页数:34 大小:176.93KB
返回 下载 相关 举报
C语言程序设计课件位运算_第1页
第1页 / 共34页
C语言程序设计课件位运算_第2页
第2页 / 共34页
C语言程序设计课件位运算_第3页
第3页 / 共34页
C语言程序设计课件位运算_第4页
第4页 / 共34页
C语言程序设计课件位运算_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《C语言程序设计课件位运算》由会员分享,可在线阅读,更多相关《C语言程序设计课件位运算(34页珍藏版)》请在金锄头文库上搜索。

1、位运算课程:程序设计语言 教材:谭浩强C程序设计第三版讲授:陈慧炜* *本章重点n6种基本位运算符的使用及其功能n位运算符的综合使用n位段的理解和应用DateDate请写出47的二进制形式请写出-47的二进制数形式提示: 1、在计算机中,数值一律以补码表示 2、绝对值相同的数,原码除符号位外都相同 3、正数的补码、原码、反码相同 4、负数的补码,是原码的反码加1注意:最高位是符号位,1表示负数,0表示正数整数的二进制表示DateDate整数的二进制表示n求负数-47的补码n原码:n反码:n补码:DateDate位与字节76543210高 低一个字节由8个二进制位(bit)构成,一个位 的取值为

2、0或1。最右端的那一位是“最低位” ,编号为0;最左端的那一位称为“最高位”, 是符号位,从最低位到最高位按顺序依次编 号。DateDate位运算符n1、按位与(b=ba;a=ab;a=011 b=100a=111 b=100b=011 a=111a=100最后,a=100 (4)b=011 (3)实现了交换DateDate| b=a1;if(b=a)printf(“算术右移!n”);else printf(“逻辑右移!n”); n若b仍为0,则表明采用的是算术右移,反之为 逻辑右移。DateDate位运算符功能总结 n清位(置0):跟0(若非说明,指指定位 的值)相 unsigned sho

3、rt Mei_ : 1 ; unsigned short Hen_ : 1 ; unsigned short _Zhe : 1 ; unsigned short _Le : 1 ; unsigned short _Guo : 1 ; v;DateDaten结构中可以同时定义位段和其他字段。例如,重新定义 动词属性结构如下: struct VerbAttr unsigned short Bu_ : 1 ; unsigned short Mei_ : 1 ; unsigned short Hen_ : 1 ; unsigned short _Zhe : 1 ; unsigned short _Le

4、 : 1 ; unsigned short _Guo : 1 ;char verb 9 ; v;该结构的理论长度为1*2+1*9=11个字节,但为了对齐, 垫补了一个字节,这时v的长度是12个字节。 DateDaten对位段中的数据引用的方法同样可以用成员运 算符“.”和指向成员运算符“-”,如v.Bu_ = 1 ;p-Hen_ = 0; n对位段进行赋值时需要注意其允许的最大值范 围,如对结构struct unsigned short a:2;unsigned short b:3;unsigned short c:4;int i;data; 写赋值语句 data.a=8 后,位段a 的值为多

5、少?DateDate关于位段的说明 1、位段成员的类型必须指定为unsigned 或int 类型 ; 2、可定义长度为0的位段,使某一位段从另一个 字开始存放,如下: struct unsigned short a: 1;unsigned short b: 2;unsigned short : 0; unsigned short c :3; data;data的长度是 几个字节?DateDate关于位段的说明3、可定义无名位段,表明该几位空间不用 :struct unsigned short a : 1;unsigned short : 1; / 无名位段,这两位空间不用unsigned sh

6、ort b : 3; unsigned short c : 3; data;DateDate关于位段的说明4、一个位段不能跨单元存储。如果第一个单元空 间不能容纳下一个位段,则放弃该空间,而从 下一个单元起存放该位段。 5、因为最小的存储单位是字节,所以不允许取位 段的地址。 6、位段也只能在结构中定义,二进制位数组、返 回二进制位的函数、二进制位的指针都是不允 许的 7、位段可以用整型格式符输出。例如:printf(“%d,%d,%d”,data.a,data.b,data.c); 8、位段可以在数值表达式中引用,它会被系统自 动地转换成整型数。DateDate总结: n如果特别看重程序的可移植性,还是应该 尽量用位运算符来处理二进制位;n如果强调使用方便和源程序的可读性,位 段也是一种不错的选择。 DateDate思考与练习n105|78=?n105|78=?nC语言标准输出函数只能将一个整数以10 、8、16进制输出,没有2进制输出格式。 要求编写程序,使键盘输入的正整数按二 进制位输出。DateDate

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号