




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机单片机C语言程序设计语言程序设计主讲教师:张小波主讲教师:张小波基本数据类型基本数据类型C语言基本概述语言基本概述运算符和表达式运算符和表达式C语言程序设计语言程序设计C语言数组语言数组C语言指针语言指针C语言函数语言函数C语言基本概述语言基本概述C语言出现的历史背景语言出现的历史背景C语言语言特点特点简单的简单的C语言程序介绍语言程序介绍进制转换进制转换 C语言 既可作为系统软件的程序设计语言,又可作为应用软件的程序设计语言。 尤其是当今计算机应用极为广泛,软件的设计、编写质量要求高,经常与硬件部分打交道,如:界面设计等,所以用C语言编写是最理想的。因而C语言也是当前计算机语言中用得最
2、广泛的语言之一。 1.1 C 1.1 C语言出现的历史背景语言出现的历史背景一、操作系统的设计语言一、操作系统的设计语言O.S. 操作系统,为用户使用计算机提供一个操作环境:系统命令、语言编程等。如:DOS. UNIX以前:O. S .软件用汇编指令编写。汇编语言:一种二进制指令代码的符号表示,既繁琐,又易出错,可读性差。改进:用C语言编写,既提高了程序的可读性,又可与硬件打交道。二 、二 、发 展 过 程发 展 过 程 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(Combined Programming Language) 1967年,M
3、atin Richards对CPL进行改进、简化 、 推 出 了 B C P L ( B a s i c C o m b i n e d Programming Language) 1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。 美国贝尔实验室D.M. Ritchie 在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。 经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。 1978年,美国Brain W.Kernighan与Dennis. M. Ritchie
4、联合出版一书The C Programming Language成为 ANSI C之基础。 1983年,美国标准化协会(ANSI) 制定了ANSI C。 ANSI C 为基础: 不同机器有不同版本,尤其是函数均应参考相应的机器。 1.2 C语言的特点语言的特点 只有通过学习,方可理解C之特点,先简叙之:1. 简洁、紧凑、方便、灵活简洁、紧凑、方便、灵活 32个关键字,9种控制语句, 主要用小写字母,压缩一切不必要成分2. 运算符丰富运算符丰富 除了最基本的、%等运算外,还将括号、赋值、类型强制转换等均作为运算符,共有34种运算符。3. 数据结构丰富数据结构丰富 除基本类型外, 有指针, 结构体
5、、共同体等类型。4. 具有结构化的控制语句具有结构化的控制语句 模块完整,控制中的语句可完整化。5. 语法严格,但有灵活性语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。6. 可与机器硬件打交道,直接访问内存地址,具可与机器硬件打交道,直接访问内存地址,具有有“ 高高”、“ 低低”级语言之功能。级语言之功能。7. 生成目标代码质量高,执行效率高。生成目标代码质量高,执行效率高。8. 可移植性优于汇编语言。可移植性优于汇编语言。1.3 简单的简单的C程序介绍程序介绍 为了更好、更快地掌握C程序,我们先看几个C语言程序:例1. main( ) printf (This is a c
6、 programn); 例2. main ( ) /*求两个数之和*/ int a, b, sum; /*这是定义变量*/ a=123; b=456; sum=a+b; printf(sum is %dn, sum); 例3.main( ) /* 主函数*/ int a, b, c; /*定义变量*/ scanf(%d, %d, &a, &b); /*输入变量a和b的值*/ c=max(a, b);/*调用max函数,将得到的值赋给c*/ printf(max=%d,c;) /*输出c的值*/ int max (x, y) int x, y; /*对形参x、y作类型定义*/ int z; /*
7、max函用到的变量z,也要加以定义*/ z=y; if (xy) z=x; return (z); /*将z的值返回,通过max带回调用处*/ 通过分析,初步看到通过分析,初步看到:1. C程序全部由一个一个的函数构成。至少有一个主函数main ( ), 其它函数可被主函数调用或相互调用。其它函数可为C 函数库中函数,也可为自己编的函数。上述特点称为程序的模块化.2. 函数的构成: 函数说明+函数体 函数体: 变量定义与执行语句 可允许空函数: dump ( ) 函数说明包括:函数名、类型、属性、参数等3. 函数的执行一定从main ( )开始。尽管main ( )函数位置可自由。4. 书写自
8、由,一个语句可多行,一行可多个语句。5. 每一条语句必须有一个分号;6. C语言的输入 / 出均以函数形式出现。scanf( ), printf( ).7. 可用/ /对C语言加注释1.4 进制转换进制转换n进制换算就是数值在不同的计数制之间进行的等值或等价换算,数值在换算前后保持不变,只是表达方式不同而已。计数制是为不同的计数单位制定的标准。 1.4.1 进位计数制概述 n实际应用经常应用的计数制,例如:十二进制(一打鸡蛋为十二个),六十进制(60秒为一分钟,60分钟为一小时)等等。n这种逢几进一的机制称为进位计数制。与C语言关系最密切的几种计数制是:二进制、八进制、十进制和十六进制。 n二
9、进制:0、1n八进制:0、1、2、3、4、5、6、7n十进制:0、1、2、3、4、5、6、7、8、9n十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F1.4.1 进位计数制概述 计数制二进制八进制十进制十六进制符号表示BODH进位规则逢二进一逢八进一逢十进一逢十六进一基数281016数码0、10、170、190、1F位权2x8x10 x16x1.4.1 进位计数制概述 1.4.2 二进制与其他进制的转换 n1. 二进制转换为十进制n二进制转换为十进制分成两部分进行,一部分是整数部分,一部分是小数部分 n范例2.1:二进制数10010.11(2)转换为十进制数 n1001
10、0.11(2) = 1x24+0 x23+0 x22+1x21+0 x20+1x2-1+1x2-2= 18.75(10) n2.二进制转换八进制 n二进制到八进制的转换采用三位一体的计算方法,同样分为整数部分和小数部分两部分考虑 n范例2.2:将二进制数1110100.101101(2)转换为八进制数 n1110100101101(2) 001/110/100/101/101(2) 1/6/4/5/5(8)=164.55(8) n3二进制转换十六进制n二进制到十六进制的转换采用四位一体的计算方法,计算时同样整数部分与销数部分分开 n范例范例2.3:将二进制数:将二进制数1110100.1011
11、01(2)转换为十六转换为十六进制数进制数 n1110100.101101(2) 0111/0100/1011/0100 (2) 7/4/B/4(16)=74.B4(16) 1.4.2 二进制与其他进制的转换 二进制八进制十进制十六进制00000000001111001022200113330100444010155501106660111777100010881001119910101210A10111311B11001412C11011513D11101614E11111715Fn进制转换表 1.4.2 二进制与其他进制的转换 1.4.3 八进制与其他进制的转换 n1. 八进制转换为十进制
12、n八进制向十进制的转换也要按照位权和数码作积再依次相加的方法 n1270(8) = 1x83+2x82+7x81+0 x80 =696(10) n2.八进制转换为二进制 n将八进制数从右到左每位数字转换为3位二进制数 n范例范例2.4:将八进制数:将八进制数5361(8)转换为二进制数转换为二进制数 n5361(8) 101/011/110/001(2) 101011110001(2) n3八进制转换为十六进制 n八进制到十六进制的转换通常以二进制为中介,即先将八进制转换为二进制,然后再由二进制转换为八进制。n范例范例2.5:将八进制:将八进制754231(8)转换为十六进制转换为十六进制n解
13、析:先将八进制数754231(8)转换为二进制n754231(8) 111/101/100/010/011/001(2)111101100010011001 (2)n再将二进制转换为十六进制n111101100010011001 (2)0011/1101/1000/1001/1001 (2)3/D/8/9/9 (16)3D899 (16) 1.4.3 八进制与其他进制的转换 1.4.4 十六进制与其他进制的转换 n十六进制数是C语言中主要的赋值方式之一,同时也是二进制在C语言中的主要表现方式。 n1十六进制转换为十进制 n十六进制向十进制的转换同样按照位权和数码作积再依次相加的方法 n13FB
14、(16) = 1x163+3x162+Fx161+Bx160 =1x163+3x162+15x161+11x160=5115 (10) n2.十六进制转换为二进制 n转换方法为:将十六进制数从右到左每位数字转换为4位二进制数 n范例范例2.6:将十六进制数:将十六进制数FB1A4(16)转换为二进制转换为二进制 nFB1A4(16)1111/1011/0001/1010/0100 (2)11111011000110100100 (2) 1.4.4 十六进制与其他进制的转换 n3十六进制转换为八进制 n十六进制转换为八进制同样需要二进制作中介。 n范例范例2.7:将十六进制数:将十六进制数3C6
15、D(16)转换为八进制数转换为八进制数 n先将十六进制数3C6D(16)转换为二进制n3C6D(16)0011/1100/0110/1101 (2)11110001101101 (2)n再将其转换为八进制:n11110001101101 (2)11/110/001/101/101 (2)3/6/1/5/5(8) 36155(8)1.4.4 十六进制与其他进制的转换 n十进制到二进制的转换分成两部分,一部分是整数部分的转换,一部分是小数部分的转换。 n1整数部分转换 n整数十进制到二进制的转换采用除二取余再反向的方法。将整数作除二取余运算,直到被除数为零,然后将余数反向顺序写出,就是整数部分的二
16、进制表达。 1.4.5 十进制与二进制的转换 n范例范例2.8:将十进制数:将十进制数158转换为二进制数转换为二进制数n解析:首先对158进行除二取余运算n158/2=79.0n79/2=39 .1n39/2=19 .1n19/2=9 .1n9/2=4 .1n4/2=2 .0n2/2=1 .0n1/2=0 .1n将所得余数自下而上按顺序从左到右写出:10011110,这就是十进制数158的二进制表示。 1.4.5 十进制与二进制的转换 n2小数部分转换 n小数部分十进制到二进制的转换采用乘二取整再顺序写出的方法。将小数部分与2相乘,记录乘积的整数部分,将小数部分再与2相乘,记录乘积的整数部分
17、,这样执行下去直到小数部分为0或满足要求精度。 1.4.5 十进制与二进制的转换 n范例范例2.9:将十进制数:将十进制数0.375转换为二进制数,要求精确转换为二进制数,要求精确到小数点后到小数点后6位位 n解析:对二进制数0.375作乘2取整运算n0.375*2=0.700 .0n0.700*2=1.400 .1n0.400*2=0.800 .0n0.800*2=1.600 .1n0.600*2=1.200 .1n0.200*2=0.400 .0n将上述所记录整数部分顺序写出:0.010110,这就是小数0.375的近似二进制表达。 1.4.5 十进制与二进制的转换 n机器数机器数 n机器
18、数的表示形式为:用“0”表示正数,“1”表示负数,其余位表示数值。通常,把在计算机内存中正、负号数字化的数称为机器数。 1.4.6 机器数及其存储格式机器数及其存储格式 n原码原码 n原码是计算机中数据存储方式之一。其表示形式为:数值用绝对值表示,在数值的最高位用“0”和“1”分别表示数值的正和负。n范例范例2.10:写出:写出+35和和-35的原码表示形式(的原码表示形式(32位表示)位表示) n解析:首先确定数据的符号作为最高位,然后将数值转换为二进制数,以32位表示n+35 原码00000000000000000000000000100011n-35 原码1000000000000000
19、0000000000100011 1.4.6 机器数及其存储格式机器数及其存储格式 n反码反码 n反码在计算机中的表示方式为:正数的反码与原码相同,负数的反码是其原码数值部分按各位取反,符号位不变。n范例范例2.11:写出:写出+35和和-35的反码表示形式(的反码表示形式(32位表示)位表示)n解析:首先分别写出两个数的原码,以32位表示n+35原码00000000000000000000000000100011n-35原码10000000000000000000000000100011n再将负数35的原码取反,得+35和-35的反码:n+35反码00000000000000000000000000100011n-35反码11111111111111111111111111011100 1.4.6 机器数及其存储格式机器数及其存储格式 n补码补码 n计算机补码的表示形式为:正数的补码与原码、反码相同,计算机补码的表示形式为:正数的补码与原码、反码相同,负数的补码是其反码加负数的补码是其反码加1,符号位不变。,符号位不变。n范例范例2.12:写出:写出+35和和-35的补码表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高档涂白卡纸项目可行性研究报告
- 对外汉语口语教学中的纠错技巧
- 2025年双层全塑钢双桶洗衣机行业深度研究分析报告
- 中国五矿化工产品行业市场前景预测及投资价值评估分析报告
- 中国分散剂DC项目投资可行性研究报告
- 单频超声波处理机行业深度研究报告
- 2023-2029年中国甘草行业市场深度评估及投资战略规划报告
- 2025年中国空气冷却式冷凝器行业市场前瞻与投资战略规划分析报告
- 2025年人造石英晶体项目可行性研究报告
- 中国油气管道行业市场发展现状及投资规划建议报告
- 八年级英语15篇完形填空(附答案)
- GB∕T 9286-2021 色漆和清漆 划格试验
- 新教材人教版高中化学选择性必修3全册各章节知识点考点重点难点归纳总结
- 病假学生追踪记录表
- 生产组织供应能力说明
- 碳酸丙烯酯法脱碳工艺工程设计
- 手榴弹使用教案
- 广东中小学教师职称评审申报表初稿样表
- 北师大七年级数学下册教学工作计划及教学进表
- 菜肴成本核算(课堂PPT)
- 光纤通信原理课件 精品课课件 讲义(全套)
评论
0/150
提交评论