第十三章 第十二章下次课讲
第十三章 文 件 第十二章 下次课讲
第十二章位运算 概念: 前面介绍c具有低级语言的特点,可以对内存单元地址及单元内容 中某一位,某几位进行操作。 位与字节:1byte=8bits It bytes float bytes char lbytes 存储信息均按二进制,采用原码,反码,补码表示数。 若用二个字节表示int:inta=5,b=-5; 十进制数 机器数 十进制数 机器数 原码:00000000010 5原码:10 反码:0000 5反码:1110 补码:0000001 补码:11111
第十二章 位运算 一、概念: 前面介绍c具有低级语言的特点,可以对内存单元地址及单元内容 中某一位,某几位进行操作。 位与字节:1byte=8bits int 2bytes float 4bytes char 1bytes : : : : 存储信息均按二进制,采用原码,反码,补码表示数。 若用二个字节表示 int : int a=5, b=-5; 十 进制 数 机器数 十进制数 机器数 5 原码:0000000000000101 -5 原码:1000000000000101 5 反码:0000000000000101 -5 反码:1111111111111010 5 补码:0000000000000101 -5 补码:1111111111111011
二、位运算符: 位操作是指按位运算(与逻辑运算!,&&,‖不同) 运算符 含义 举例 & 按位与操作 0&1=0.180=0.080=0.1&l=1 按位或操作 01=1,1}0=1,010=0,11=1 按位异或操作0~1=1,1^0=1,0~0=0,1~1=0 按位取反操作 << 左移 0000010<<2,结果:00001000 (不产生溢出,可实现左移一位,乘2) 右移 01000002,结果:00010000 (不产生溢出,可实现右移一位,除2) 复合位运算:&=
二、 位运算符: 位操作是指按位运算(与逻辑运算 !, &&, ¦¦ 不同) 运算符 含义 举例 & 按位与操作 0&1=0, 1&0=0, 0&0=0, 1&1=1 ¦ 按位或操作 0 ¦ 1 =1, 1 ¦ 0=1, 0 ¦ 0=0, 1 ¦ 1=1 ^ 按位异或操作 0 ^ 1=1, 1^ 0=1, 0^ 0=0, 1^ 1=0 ~ 按位取反操作 ~0=1 , ~1=0 > 右移 01000000>>2, 结果: 00010000 (不产生溢出,可实现右移一位,除2) 复合位运算: &=, ¦ =,^=, ~ =,>=
、应用举例 、按位与:实时控制的需要,仅对a(整型数) 中某几位取出进行监测,而对a中其他位屏蔽掉。可 以根据需要设置屏蔽字(关心的某几位置1,不关心 位置0)。a和屏蔽字相与,即可。 a=0110110110011010→保留a的低7位 mask=00000111→mask的低7位置1,其它置0 a&mask=0000000001010→取出a低7位的原状态 2、按位或:实时控制的需要,常须送出去的控制信号, 某几位为1(将某些开关合上)可以根据需要,控制字的某几位置 1,再与a相或。 a=0110110110011000 将a的低4位置 cont=00000001cont的低四位置1 a icont=011011011001111l 使a的低4位为1,其它位为 原状态
三、应用举例: 1、按位与:实时控制的需要,仅对a(整型数) 中某几位取出进行监测,而对a中其他位屏蔽掉。可 以根据需要设置屏蔽字(关心的某几位置1,不关心 位置0)。a和屏蔽字相与,即可。 a=0110 1101 1001 1010 保留a的低7位 mask=0000 0000 0111 1111 mask的低7位置1,其它置0 a&mask=0000 0000 0001 1010 取出a低7位的原状态 2、按位或:实时控制的需要,常须送出去的控制信号, 某几位为1(将某些开关合上)可以根据需要,控制字的某几位置 1,再与a相或。 a=0110 1101 1001 1000 将a的低4位置1 cont=0000 0000 0000 1111 cont的低四位置1 a ¦cont=0110 1101 1001 1111 使a的低4位为1,其它位为 原状态
3、按位异或操作:根据需要将a中某几位取反,这 时cont相应位置1,再与a异或,即可。 a=0110110110110111将a的低8位取反 cont=00000001cont的低8位置1 a^cont=0110110101001000取a低8位的反,其 它位不变 还可实现加、解密功能:将a异或一个key(自定)得 到a”(加密后的码)再用a异或key(与加密时用的key 相同)得到原a a=00011011 key=00000101 a=a^key=00011110 a=00011110 key=00000101 a=a^key=00011011
3、按位异或操作:根据需要将a中某几位取反,这 时cont相应位置1,再与a异或,即可。 a=0110 1101 1011 0111 将a的低8位取反 cont=0000 0000 1111 1111 cont的低8位置1 a^cont=0110 1101 0100 1000 取a低8位的反,其 它位不变 还可实现加、解密功能:将a异或一个key(自定)得 到a’(加密后的码)再用 a’ 异或 key(与加密时用的key 相同)得到原a. a= 0001 1011 key= 0000 0101 a’=a^key= 0001 1110 a’ = 0001 1110 key= 0000 0101 a= a’^key= 0001 1011
第十章文件 、C文件的概迷 1、什么是文件?我们所说的文件是存储在磁盘上的 数据集合,也就是我们说的数据文件 2、文件用来保存什么数据?可以保存程序中使用 的数据,比如学生成绩单,也可以保存程序的运行结 果,不如对成绩单的排序、程序计算出的一组数据等 3、C语言文件的组成:C语言文件是以字符(字节) 为单位存储的,也就是每一个C语言文件都是一个字 符序列,C语言文件分两种存储方式。 种是文本(ASCI码)文件:文件中每一个字 节存放一个字符。 另一种是二进制文件:是把内存中的二进制数直 接存储到磁盘文件中
第十章 文件 一、 C 文件的概述 1、什么是文件?我们所说的文件是存储在磁盘上的 数据集合,也就是我们说的数据文件。 2、文件用来保存什么数据?可以保存程序中使用 的数据,比如学生成绩单,也可以保存程序的运行结 果,不如对成绩单的排序、程序计算出的一组数据等。 3、C语言文件的组成:C语言文件是以字符(字节) 为单位存储的,也就是每一个C语言文件都是一个字 符序列,C语言文件分两种存储方式。 一种是文本(ASCII码)文件:文件中每一个字 节存放一个字符。 另一种是二进制文件:是把内存中的二进制数直 接存储到磁盘文件中
两种存储方式的比较 文本文件特点: 存储量大、速度慢、便于对字符操作 如int型数10000 ASCI形式 0011000100110000001100000011000000110000 0010011100010000 0010011100010000 内存存储形式 进制形式 二进制文件特点: 存储量小、速度快、便于存放中间结果
如 int型数10000 0010011100010000 内存存储形式 0010011100010000 二进制形式 0011000100110000001100000011000000110000 ASCII形式 文本文件特点: 存储量大、速度慢、便于对字符操作 二进制文件特点: 存储量小、速度快、便于存放中间结果 两种存储方式的比较
4、什么是缓冲文件系统? 输入文件缓冲区 缓冲文件系统 磁盘文件 程序数据区 输出文件缓冲区
磁盘文件 输出文件缓冲区 输入文件缓冲区 程序数据区 a 缓冲文件系统: 4、什么是缓冲文件系统?
二、文件类型指针 1、什么是文件结构体FLE? 1)缓冲文件系统为每个正使用的文件在内存开辟文件 信息区 2)文件信息用系统定义的名为FE的结构体描述 3)FILE定义在 stdio h中 typedef struct 用 typedef定义类型 int fd;∥件号 例 int clef;∥缓冲区中剩下的字符数 ypedef int INTEGER int mode;∥文件操作方式 typedef float rEaL maino char*next;∥文件当前读写位置 AINTEGER a b char*buf∥文件缓冲区位置 REAL f SFILE
二、 文件类型指针 1、什么是文件结构体FILE ? 1)缓冲文件系统为每个正使用的文件在内存开辟文件 信息区 2)文件信息用系统定义的名为FILE的结构体描述 3)FILE定义在stdio.h中 typedef struct { int _fd; //文件号 int _cleft; //缓冲区中剩下的字符数 int _mode; //文件操作方式 char *_next; //文件当前读写位置 char *_buff; //文件缓冲区位置 }FILE; 用typedef 定义类型 例如: typedef int INTEGER; typedef float REAL; main() {INTEGER a,b; REAL f; ….. }
2、文件类型指针 1)指针变量说明:FLE*fp; 用法 文件打开时,系统自动建立文件结构 体,并把指向它的指针返回来。程序 通过这个指针获得文件信息访问文件 文件关闭后,它的文件结构体被释放
2、文件类型指针 1)指针变量说明:FILE *fp; 用法: ⚫文件打开时,系统自动建立文件结构 体,并把指向它的指针返回来,程序 通过这个指针获得文件信息,访问文件 ⚫文件关闭后,它的文件结构体被释放