(6.19)--补充课件第13讲-位运算程序设计基础.ppt

(6.19)--补充课件第13讲-位运算程序设计基础.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
位运算举例——循环移位 输入运行开始时输入八进制数157653,即二进制数1101111110101011,循环右移3位后得二进制数0111101111110101,即八进制数75765。 同样可以左循环位移。 void main() {unsigned a,b,c; int n; scanf("a=%o,n=%d",&a,&n); b=a<<(16-n); c=a>>n; c=c|b; printf("%o\n%o",a,c);} getch(); } 位运算 概述 位运算符和位运算 位运算举例 位段 小结 参考书目及网络资源 讨论时间 位段 信息的存取一般以字节为单位。实际上,有时存储一个信息不必用一个或多个字节,例如,“真”或“假”用0或1表示,只需1位即可。 在计算机用于过程控制、参数检测或数据通信领域时,控制信息往往只占一个字节中的一个或几个二进制位,常常在一个字节中放几个信息。 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0 和1 两种状态,用一位二进位即可。 位段 为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段” (bit field)。 所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。 位域的定义和位域变量的说明 位域定义与结构定义相仿,其形式为:  struct 位域结构名    { 位域列表 }; 其中位域列表的形式为:   类型说明符 位域名:位域长度 位域变量的说明与结构变量说明的方式相同。 可采用先定义后说明,同时定义说明或者直接说明这三种方式。 位域的定义和位域变量的说明 struct packed_data { unsigned a:2; unsigned b:6; unsigned c:4; unsigned d:4; int i; }data; 位段使用说明 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。 例如: struct bs {unsigned a:4 unsigned :0 /*空域*/ unsigned b:4 /*从下一单元开始存放*/ unsigned c:4} 在这个位域定义中,a 占第一字节的4 位,后4 位填0 表示不使用,b 从第二字节开始,占用4 位,c 占用4 位。 位段使用说明 下例中,a、b、c之后7位空间闲置不用,i从另一字节开头起存放(如图a所示)。注意,在存储单元中位段的空间分配方向因机器而异。在微机使用的C系统中,一般是由右到左进行分配的。见图b。 a b struct packed_data { unsigned a:2; unsigned b:3; unsigned c:4; int i; }data; 位段使用说明 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8 位二进位。 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。 从以上分析可以看出,位域在本质上就是一种结构类型,不过其成员是按二进位分配的。 struct k {int a:1 int :2 /*该2 位不能使用*/ int b:3 int c:2 }; * * * 第十三讲 位运算 『C语言程序设计 · The C Programming Language』 位运算 本章要求 掌握各种位运算符,运算规则和优先级。 了解位运算的实际应用。 了解位段的定义和应用。 本章重点 掌握各种位运算符,运算规则和优先级。 了解位运算的实际应用。 本章难点 掌握各种位运算符,运算规则和优先级。 位运算 概述 位运算符和位运算 位运算举例 位段 小结 参考书目及网络资源 讨论时间 位运算 概述 位运算符和位运算 位运算举例 位段 小结 参考书目及网络资源 讨论时间 在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。 位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。 C语言提供位运算的功能,与其他高级语言(如PASCAL等)相比,具有很大的优越性。 概  述 位运算符和位运算 位运算对象为整型或字符型数据。 位运算是对运算对象的每个二进制位分别操

文档评论(0)

177****2883 + 关注
实名认证
内容提供者

热爱教育,专注于教育领域创作与分享,让我们共同进步。

1亿VIP精品文档

相关文档