资源预览内容
第1页 / 共116页
第2页 / 共116页
第3页 / 共116页
第4页 / 共116页
第5页 / 共116页
第6页 / 共116页
第7页 / 共116页
第8页 / 共116页
第9页 / 共116页
第10页 / 共116页
亲,该文档总共116页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计教程,第2章:C 语言基本语法元素 (3课时),提 纲,计算机内数的表示 数据类型 量与表达式 语 句 本章小结,程序和数据,通常程序要对数据进行操作处理: 处理的对象是数据 通过运算符和表达式进行操作 举例: 文字处理软件 数值计算软件 多媒体软件 你如何描述数据?,数据在程序如何描述?,为什么不使用:0和1组成的位串? 程序设计语言本身提供某种程度的抽象。 C语言中数据类型分为三大类: 基本类型 构造类型 指针类型 带来了什么好处?,例如:,计算圆的面积,半径为 5 cm。 程序如下:,main( ) float r, area ; r=5 ; area=3.14*r*r; printf (“%fn “, area) ; ,运算结果是输出圆的面积:78.500000,程序中用到的数据:r、area、5、3.14 对数据进行的运算:* 、=,分析:,计算机操作处理时,要完成以下工作: 在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值? 数据 5 和 3.14 与 r 、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理? 对整数 5 和小数3.14 ,计算机存放时是否有区别?,涉及数据类型 的基本知识,C语言的数据类型,C数据类型,本章讨论 基本类型数据,计算机中数的表示 数值数据:表示数量的多少。 数据 非数值数据:表示符号、标记。 我们讨论各类数据的表示方法,就是讨论它们在计算机内的存储格式和编码规则。,如字母、汉字、标点符号、运算符等。,R进制计数法 数制 就是用一组固定的数码和一套统一的运算规则表示数值的方法。例如: 十进制使用10个数码(09),计数规则是“逢十进一”。 二进制使用2个数码(0,1),计数规则是“逢二进一”。 八进制使用8个数码(07),计数规则是“逢八进一”。 十六进制使用16个数码( 09,A,B,C,D,E,F),计数规则是“逢十六进一”。,基数(R) 是指一种数制中所使用的数码个数。 十进制使用10个数码,基数R=10; 二进制使用2个数码,基数R=2; 同样,八进制的基数R=8;十六进制的基数R=16。 由以上四种数制可以看出一个规律: 各种数制中,最小的数码都是0,最大的数码都比基数小1 ( R1)。,练习与讨论,1. 有人说:“2008不可能是八进制数”,这种说法对吗?,对。 因为八进制数中没有数码8。2008可能是十进制数,也可能是十六进制数。,位权 在一个数中,同一个数码处于不同位置所代表的值不同。 例如,十进制数111.8中有3个1,它们分别表示100、10、1。111.8 可以写成如下形式: 111.8=1102 +1101 +1100 + 810-1 其中,以基数10为底的整数幂(如102,101,100,10-1 ) 称为各位的位权。 上式等号右面的多项式称为按权展开式。,同理,二进制数1011 B可以按权展开: 1011 B=123 + 022 + 121 + 120 其中,以基数2为底的整数幂就是各位的权: 位: 1 0 1 1 位权:23 22 21 20,四种数制间的转换 1. 二进制数与十进制数之间的转换 二进制数十进制数 方法:按权展开求和。 例1. 1101 B = D,1101 B =,123,+ 122,+ 021,+ 120,= 8 + 4 + 0 + 1,= 13,13, 十进制整数二进制整数 方法:除2取余,余数倒序排列。 例2. 13 = B,0 1,1101,商为0,除法停止, 十进制小数二进制小数 方法:乘2取整,整数正序排列。 例3. 0.125 = B,0.250,小数部分为0,乘法停止,0.001,例4. 0.43 = B 0.43 2 0 0.86 2 1 1.72 (取走整数) 0.72 2 1 1.44 (取走整数) 0.44 2 0 0.88, 0.430.0110 B 误差小于2-4,例5. 13.125 = B 方法: 先把整数部分13转换成二进制整数1101; 再把小数部分0.125转换成二进制小数0.001; 把两部分写在一起:1101.001B,2. 二进制数 八进制数 先看 表1-1。从表中可看出如下规律: 二进制数八进制数 方法:先将二进制数从小数点开始,向左或向右每3位分成一组,再将每一组写成1位八进制数。 例6. 1011101.11 B = 001 011 101. 110 B = 135.6 Q,3位二进制数对应1位八进制数; 4位二进制数对应1位十六进制数。, 八进制数二进制数 方法:将每1位八进制数直接写成3位二进制数。 例7. 237 Q = 010 011 111 B = 10011111 B,3. 二进制数 十六进制数 二进制数十六进制数 方法:将二进制数从小数点开始,每4位分成一组,再将每一组写成1位十六进制数。 例8. 1011100 B = 0101 1100 B = 5C H, 十六进制数二进制数 方法 :将每1位十六进制数直接写成4位二进制数。 例9. 1C8 H = 0001 1100 1000 B = 111001000 B,注:十进制数 八进制数 十进制数 十六进制数 方法与十进制数 二进制数类似。 例10. 127 Q = D 127 Q = 182 + 281 +780 = 64 +16 + 7 = 87,例11. 100 = H 方法:除基取余。,6,0,64,提示:当数值较大时(如226),为了减少除法次数,以减少出错机会,更好的方法是: 十进制数十六进制数二进制数,10 0 10 B,8 0 H,数值数据有两种表示方法,例如: 后缀法 下标法 1010 B (1010)2 6072 Q (6072)8 985 D 或 985 (985)10 或 985 9F0 H (9F0)16 0B407 H (B407)16,十六进制数以字母开头时,前面加0,计算机中数据的编码方法 数值数据包括整数和实数。在计算机内部都用二进制表示。 实数表示形式有两种:小数和指数。为了便于理解,用十进制与二进制进行对比: 十进制 二进制 小数形式 1.5 1.1 B 指数形式 1.5*100 1.1*200B 或 0.15*101 0.11*201B 或 0.015*102 0.011*210B,规格化 形式,中整数部分为0,小数部分最高位不为0。 在计算机中,只能用有限个二进制位存储一个数。在这有限个二进制位(如32位)中,尾数和指数各占多少位,才能使精度最高、数的表示范围最大呢?C语言采用IEEE(美国电气和电子工程师学会)格式:符号位占1位,指数占8位,尾数占23位。具体格式将在第9章介绍。 下面介绍整数的编码。,数据的原码、反码和补码表示 我们以8位二进制数为例,介绍整数编码的概念和方法。用8个二进制位表示1个整数时,各位的序号是: 7 6 5 4 3 2 1 0 1. 原码表示法 最高位为符号位,其余各位表示数的绝对值。,符号位:0 表示正,1 表示负,例如:3的原码: 0 0 0 0 0 0 1 1 3的原码: 1 0 0 0 0 0 1 1 表示范围:1111111101111111 127127 即 (27 1)(27 1) 原码的缺点: 零的表示不唯一:00000000 10000000 运算时,要对数的不同符号作不同的处理,相当麻烦。,2. 反码表示法 正数的反码同原码。 负数的反码:符号位为1,其余各位是其原码的按位取反。 例如: 3的原码:1 0 0 0 0 0 1 1 3的反码:1 1 1 1 1 1 0 0 表示范围:10000000 01111111 即 127 127 反码也有两个零,使用也不方便。引入反码的目的是通过它来求补码。,3. 补码表示法 正数的补码同原码。 负数的补码:符号位仍为1,在其反码的末位加1便得到补码。 例如: 3的原码:1 0 0 0 0 0 1 1 3的反码:1 1 1 1 1 1 0 0 3的补码:1 1 1 1 1 1 0 1 表示范围:10000000 01111111 128 127 即27 (271),补码的变化规律(128127)* 127 01111111 126 01111110 2 00000010 1 00000001 0 00000000 1 11111111 2 11111110 127 10000001 128 10000000,练习与讨论,4. 请写出10和10的8位二进制补码。,注意:负数的补码不表示真值,再对其求一次补码才是真值。,10的补码:00001010 10的原码:10001010 10的反码:11110101 10的补码:11110110,练习与讨论,5. 8位二进制补码能够表示的数值范围是 。 超过此范围的数如何表示?,128127,用16位或32位来表示更大的数,ASCII码字符的编码 字符编码就是规定用怎样的二进制码来表示字母、数字及各种符号,以便计算机能够识别、存储和处理它们。 在微机中,字符编码采用ASCII(美国信息交换标准代码)。 ASCII码有7位和8位两种版本。7位ASCII码是国际标准(见教材P539附录A) 。 1个字符的ASCII码虽然是7位,但是字节是基本存储单位,所以1个字符必须占1个字,节,最高位置0。 表中,ASCII码为031和127总共33个字符为控制符,如回车符CR、换行符LF、删除符DEL等,控制符主要用于数据传输。 ASCII码为32126的字符是可打印字符(其中SP表示空格),这些字符用于显示或打印输出。由ASCII码表可以看出如下规律: 小写字母的ASCII码比其大写字母的ASCII码大32。例如,A的ASCII码为65,a的ASCII码为65+32=97。, 阿拉伯数字0的ASCII码为48,1的ASCII码为49,依次递增。 只要记住两个ASCII码和一条规律,便能计算出所有字母和数字字符的ASCII码 : 例如,d是第4个英文字母,所以d的ASCII码为: 65+41+32=100 6排在0后面第6个位置,所以6的ASCII码为:48+6=54,A65,048 小写字母ASCII码比其大写字母ASCII码大32,扩展ASCII码* 采用8位编码,最高位是1,从1000000011111111(128255),可表示127个符号,如希腊字母、等,数学符号、等,拼音字母、等等。 汉字也是非数值数据,其编码方法比较复杂,请参考第5章。,练习与讨论,6*. 计算机中为什么使用二进制?, 可靠性 二进制使用的数码少,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。 二进制数与十进制数之间的自动转换很容易实现。人们使用计算机时可以仍然使用熟悉的十进制数,这给工作带来极大的方便。,计算机中采用二进制,是因为二进制具有许多优点,例如: 可行性 二进制仅使用0和1两个数码,用双稳态电路表示二进制数很容易
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号