c++学习第8章 位运算.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c学习第8章位运算

本章导读 本章是初学C语言者的一大难点,属较高要求,适合于编写系统软件的需要。同学们应在掌握了计算机的几种基本数值编码的基础上,开始本章的学习。通过本章的学习我们将近一步体会到C语言既具有高级语言的特点,又具有低级语言的功能,它能直接对计算机的硬件进行操作,因而它具有广泛的用途和很强的生命力。 第8章 位运算 8.1 位运算的C程序实例 【例8.1】实例 [例8.1]程序演示 8.2 二进制位运算 8.2.1 二进制位运算 8.2.1 二进制位运算 1.“按位与”运算符() 1.“按位与”运算符() 【例8.2】实例 [例8.2]程序演示 【例8.3】实例 [例8.3]程序演示 【例8.4】实例 [例8.4]程序演示 2.“按位或”运算符(|) 【例8.5】实例 [例8.5]程序演示 3.“按位异或”运算符(^) 【例8.6】实例 [例8.6]程序演示 【例8.7】实例 【例8.7】实例 [例8.7]程序演示 4.“求反”运算符 (~) 5.“左移”运算符() 6.“右移”运算符() 8.2.2 位复合赋值运算符 表8-2 位复合赋值运算符 8.3 位段 1.位段的定义与位段中数据是引用 (1)位段的定义 (1)位段的定义 (2)位段中数据的引用 2.对于位段使用的几点说明 【例8.8】实例 【例8.8】实例 [例8.8]程序演示 8.4 综合实训 【例8.9】实例 【例8.9】实例 [例8.9]程序演示 【例8.10】实例 【例8.10】实例 [例8.10]程序演示 《 C语言程序设计》 (Visual C++ 6.0环境) 返回本节目录 (1)位段的定义 (2)位段中数据的引用 《 C语言程序设计》 (Visual C++ 6.0环境) 返回1目录 位段的定义就是将它定义为结构体中的成员,其形式为: struct 结构体名 { 位段表列 }; struct 结构体名 结构变量表列; 或 struct 结构体名 { 位段表列 }结构变量表列; 或 struct { 位段表列 }结构变量表列; 在这三种形式中,位段表列的形式均为: 类型说明符 位段名:位段长度; 《 C语言程序设计》 (Visual C++ 6.0环境) 例如:struct bs { unsigned a:8; unsigned b:2; unsigned c:6; }data; 表示data为struct bs型结构变量(也称位段变量),共占两个字节。其中位段a占8位,位段b占2位,位段c占6位,如图8-1所示。 8 2 6 (位) 图8-1data位段变量内存示意图 c b a 返回1目录 《 C语言程序设计》 (Visual C++ 6.0环境) 位段在本质上就是一种结构体类型中的成员,只不过是按二进制位分配的。因此,位段中数据的引用可按结构变量成员的访问方法进行,形式为: 结构变量.位段名 如:data.a=2;表示给位段变量data的位段a赋值为2。 返回1目录 《 C语言程序设计》 (Visual C++ 6.0环境) (1)一个位段必须存储在同一个存储单元中,不能跨跃两个单元。如一个单元所剩空间不够存放下一位段时,应从下一单元起存放该位段。 (2)可以有意使某位段从下一单元开始存放。 (3)位段中的数据不能超过其允许的最大值范围,位段的长度不能大于机器字长。例如,定义位段的长度为2位,则其中存放的最大数为3。 (4)位段可以无名位段,无名位段是不能使用的,它只用来作填充或调整位置。 (5)不能定义位段数组,也不能定义返回值为位段的函数。 (6)位段允许在数据表达式中引用,它会被系统自动地转换为整型数。 返回本节目录 《 C语言程序设计》 (Visual C++ 6.0环境) 【例8.8】位段变量和指向位段的指针变量的使用。程序名为l8_8.cpp。 #include stdio.h main() { struct bs { unsigned a:1; unsigned b:3; unsigned c:4; } bit,*pbit; bit.a=1; /*分别给三个位段赋值*/ bit.b=7; bit.c=15; printf(%d,%d,%d\n,bit.a,bit.b,bit.c);/*以整型量格式输出三个位段的内容*/ pbit=bit;

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档