第11章位运算
- 格式:ppt
- 大小:1.51 MB
- 文档页数:24


第11章结构体、联合体与位运算本章介绍结构体、联合体及枚举类型等三种新的构造型数据类型以及位运算的基本方法,包括结构体的含义;结构体类型变量的定义、引用及初始化方法;结构体数组的定义和数组元素的引用;结构体类型指针的概念及链表的基本操作方法;联合体的含义;联合体类型变量的定义方法;枚举类型的定义; TYPEDEF的作用和位运算的基本方法等。
11.1 结构体类型通过前面有关章节的学习,我们认识了整型、实型、字符型等C语言的基本数据类型,也了解了数组这样一种构造型的数据结构,它可以包含一组同一类型的元素。
但仅有这些数据类型是不够的。
在实际问题中,有时需要将不同类型的数据组合成一个有机的整体,以便于引用。
例如,在新生入学登记表中,一个学生的学号、姓名、性别、年龄、总分等,它们属于同一个处理对象,却又具有不同的数据类型。
如图11-1。
每增加、删减或查阅一个学生记录,都需要处理这个学生的学号、姓名、性别、年龄、总分等数据,因此,有必要把一个学生的这些数据定义成一个整体。
图11-1虽然数组作为一个整体可用来处理一组相关的数据,但不足的是,一个数组只能按序组织一批相同类型的数据。
对于一组不同类型的数据,显然不能用一个数组来存放,因为数组中各元素的类型和长度都必须一致。
为了解决这个问题,C语言中给出了另一种构造数据类型——“结构体”。
11.1.1 结构体类型与结构体变量结构体是一种构造类型,它由若干“成员”组成。
每一个成员可以是一个基本数据类型或者又是一个构造类型。
结构体既然是一种构造而成的数据类型,那么在使用之前必须先定义它,如同在调用函数之前要先定义或声明一样。
定义一个结构体类型的一般形式为:struct 结构体名{ 成员1 类型1;成员2 类型2;...成员n 类型n;};“结构体”这个词是根据英文单词structure译出的。
结构体中的每个成员均须作类型说明,成员名的命名应符合标识符的书写规定,成员名可以与程序中的变量名同名,二者不代表同一对象,互不干扰。
位运算通俗解释位运算是一种计算机运算方式,它操作的是二进制数的每一位。
本文将通俗地解释位运算的概念、运算规则和实际应用。
一、位运算的概念位运算是一种计算机运算方式,它操作的是二进制数的每一位。
在计算机中,二进制数是由 0 和 1 组成的序列,每一位的权重是 2 的幂次方。
例如,一个 8 位二进制数,从右往左依次为第 0 位、第1 位、第2 位……第 7 位,其权重分别为 2^0、2^1、2^2……2^7。
二、位运算的规则位运算包括按位与、按位或、按位异或、按位取反等操作。
下面分别介绍这些操作的规则:1. 按位与(&)按位与操作是将两个二进制数对应位上的数进行逻辑与运算。
只有当两个数都为 1 时,结果才为 1,否则结果为 0。
例如,11&11=11,11&10=10。
2. 按位或(|)按位或操作是将两个二进制数对应位上的数进行逻辑或运算。
只有当两个数都为 0 时,结果才为 0,否则结果为 1。
例如,11|11=11,11|10=11。
3. 按位异或(^)按位异或操作是将两个二进制数对应位上的数进行逻辑异或运算。
只有当两个数相同时,结果才为 0,否则结果为 1。
例如,11^11=00,11^10=10。
4. 按位取反(~)按位取反操作是将一个二进制数的每一位取反。
例如,~11=00,~10=11。
三、位运算的应用位运算在计算机科学中有广泛应用,以下列举几个常见的应用场景:1. 整数运算位运算可以用于整数运算,例如求一个数的二进制表示、求两个数的和、求一个数除以 2 的余数等。
2. 字符串处理位运算可以用于字符串处理,例如求一个字符串的长度、求一个字符串是否为空、求两个字符串是否相同等。
3. 数据压缩位运算可以用于数据压缩,例如将一个二进制数转换为十进制数时,可以通过位运算将二进制数转换为十进制数的每一位,从而实现压缩。
总之,位运算是一种重要的计算机运算方式,它操作的是二进制数的每一位,具有高效、快速、精确等特点。