第二书包网

收藏备用网址www.dier22.com不迷路
繁体版 简体版
第二书包网 > c语言设计第三版 > 00001100 (十进制为 12)

00001100 (十进制为 12)

在这个位域定义中,a 占第一字节的 4 位,后 4 位填 0 表示不使用,b 从第二字节开

始,占用 4 位,c 占用 4 位。

2) 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说

不能超过 8 位二进位。

3) 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。

例如:

struct k

int a:1

int :2 /*该 2 位不能使用*/

int b:3

int c:2

};

从以上分析可以看出,位域在本质上就是一种结构类型,不过其成员是按二进位分配的。

2. 位域的使用

位域的使用和结构成员的使用相同,其一般形式为:

位域变量名?位域名

位域允许用各种格式输出。

【例 12.6】

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;

pbit->a=0;

pbit->b&=3;

pbit->c|=1;

printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c);

上例程序中定义了位域结构 bs,三个位域为 a,b,c。说明了 bs 类型的变量 bit 和指向

bs 类型的指针变量 pbit。这表示位域也是可以使用指针的。程序的 9、10、11 三行分别给三

个位域赋值(应注意赋值不能超过该位域的允许范围)。程序第 12 行以整型量格式输出三个域

的内容。第 13 行把位域变量 bit 的地址送给指针变量 pbit。第 14 行用指针方式给位域 a 重

新赋值,赋为 0。第 15 行使用了复合的位运算符"&=",该行相当于:

pbit->b=pbit->b&3

位域 b 中原有值为 7,与 3 作按位与运算的结果为 3(111&011=011,十进制值为 3)。同样,程

序第 16 行中使用了复合位运算符"|=",相当于:

pbit->c=pbit->c|1

其结果为 15。程序第 17 行用指针方式输出了这三个域的值。

12.3 本章小结

1. 位运算是C语言的一种特殊运算功能, 它是以二进制位为单位进行运算的。位运算

符只有逻辑运算和移位运算两类。位运算符可以与赋值符一起组成复合赋值符。如

&=,|=,^=,>>=,<<=等。

2. 利用位运算可以完成汇编语言的某些功能,如置位,位清零,移位等。还可进行数

据的压缩存储和并行运算。

3. 位域在本质上也是结构类型,不过它的成员按二进制位分配内存。其定义、说明及

使用的方式都与结构相同。

4. 位域提供了一种手段,使得可在高级语言中实现数据的压缩,节省了存储空间,同

时也提高了程序的效率。

13.1 C 文件概述

13 文件

所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实

际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、

库文件 (头文件)等。

文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。从不同的角度

可对文件作不同的分类。从用户的角度看,文件可分为普通文件和设备文件两种。

普通文件是指驻留在磁盘或其它外部介质上的一个有序数据集,可以是源文件、目标文

件、可执行程序;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文

件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。

设备文件是指与主机相联的各种外部设备,如显示器、打印机、键盘等。在­操­作系统中,

把外部设备也看作是一个文件来进行管理,把它们的输入、输出等同于对磁盘文件的读和写。

通常把显示器定义为标准输出文件,一般情况下在屏幕上显示有关信息就是向标准输出

文件输出。如前面经常使用的 printf,putchar 函数就是这类输出。

键盘通常被指定标准的输入文件,从键盘上输入就意味着从标准输入文件上输入数据。

scanf,getchar 函数就属于这类输入。

从文件编码的方式来看,文件可分为 ASCII 码文件和二进制码文件两种。ASCII 文件也

称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的 ASCII 码。

例如,数 5678 的存储形式为:

ASCII 码: 00110101 00110110 00110111 00111000

十进制码: 5 6 7 8

共占用 4 个字节。

ASCII 码文件可在屏幕上按字符显示,例如源程序文件就是 ASCII 文件,用 DOS 命令 TYPE

可显示文件的内容。由于是按字符显示,因此能读懂文件内容。

二进制文件是按二进制的编码方式来存放文件的。

例如, 数 5678 的存储形式为:

0 0

一秒记住www点dier22点com,最新小说等你来
『加入书签,方便阅读』