版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章C语言程序设计预备知识教材、参考书与课时安排教材C语言程序设计教程王敬华编著清华大学出版社参考书C语言程序设计教程习题解答与实验指导王敬华编著清华大学出版社C语言程序设计教程谭浩强高等教育出版社C高级实用程序设计王士元清华大学出版社课时安排授课:54学时上机:34学时学习要求及成绩构成学习要求课前请做好预习,课后请做好复习保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间成绩构成平时成绩(考勤和作业):20%实验(含上机考试):20%期末考试:60%第1章:C语言程序设计预备知识
学习的意义
1、什么是计算机系统?
2、计算机中如何表示“信息”?不管哪种类型的信息在计算机中最终都是以二进制数据信息来表示和处理
语言程序设计教程第一章预备知识C计算机系统
硬件系统软件系统
运算器控制器存储器输入设备输出设备内存外存CPU主机外围设备系统软件应用软件3、什么是程序?程序---数据结构+算法+语言规范+编译调试环境程序包含4个要素:待处理的数据。算法。语言规范。编译调试环境。4、程序是怎么执行的?输入设备内存储器外存储器运算器控制器输出设备信息(如程序、原始数据)(存)数据(取)数据运算命令输出命令输出信息(存)数据存取指令程序指令数据输入指令数据信息控制信息5、程序语言是什么?程序语言是由字符集,保留字、数据类型、语法规则组成的集合。程序结构的规范。注释的规范标识符命名的规范。变量和常量定义的规范数据类型和表达式定义语句规范函数定义和函数调用的规范预编译处理的规范。其他。6、程序语言==程序设计吗? 显然,程序设计≠程序语言
程序设计的最终目标是解决问题。贯穿程序设计全过程的只有“what,why,how”.what:需求是什么?
why:分析符合需求的定义吗?软件设计符合分析的结果吗?
how:怎样定义需求?是采用面向功能的还是面向对象的分析和设计方法?数据结构怎样定义?编码的规范和接口的定义存在二义性吗?函数的详细设计有流程图吗?选用哪种开发语言和平台?测试方案是否覆盖了所有的路径?需求定义需求分析概要设计详细设计编码测试维护程序语言和开发过程哪个更重要呢??7、学习C语言应掌握哪些主要内容语言实质上是一些规范。学习语言的目的是为了设计程序。程序==数据结构+算法+语言规范+编译调试环境
数据结构:数据类型,包括基本类型(字符类型,整数类型,实数类型)和构造类型(数组,结构体,公用体类型),以及指针类型,甚至由以上类型构成的更复杂的数据结构如链表、栈、集合、队列等。
算法分析:学会绘制流程图,掌握过程化控制语句(9大类),理解表达式、表达式的执行顺序和优先级,学会定义函数,理解函数参数传递机制和函数的运行时环境。
掌握C语言的其他规范:包括标识符,变量,常量,程序结构,注释,命名规范,宏定义等。掌握C语言的标准库函数和丰富自己的函数库。
最重要的是多练习:熟练掌握一门开发环境,能熟练地调试应用程序。预备知识学习目标
掌握二进制数的表示及二进制数与其它进制数的转换方法;掌握机器数的表示形式和表示范围,特别是补码表示形式;掌握补码的加、减运算方法;掌握二进制数的位运算方法;
这些是更好地理解和掌握C语言数据类型(第3章)的基础。语言程序设计教程第一章预备知识C预备知识学习内容
进位计数制及其转换(二进制、八进制、十六进制)机器数的表示形式及其表示范围(原码、补码、反码)二进制数的位运算(与、或、非、异或)本章小结语言程序设计教程第一章预备知识C1.2进位计数制及其转换
数码、基与权
数码:表示数的符号
基数:数码的个数
权:每一位所具有的值数制语言程序设计教程第一章预备知识C数制基权表示数码特点10º,10¹,10²,…十进制数0~910逢十进一二进制数0~122º,2¹,2²,…逢二进一八进制数0~788º,8¹,8²,…逢八进一十六进制数0~9,A~F,a~f1616º,16¹,16²,…逢十六进一十进制:4956=410³+910²+510¹+610º二进制:1011=12³+02²+12¹+12º十六进制:81AE=816³+116²+1016¹+1416º八进制:4275=48³+28²+78¹+58º语言程序设计教程第一章预备知识C进制之间的相互转换二进制、八进制、十六进制转换成十进制
方法:按权相加语言程序设计教程第一章预备知识C进制之间的相互转换二进制、八进制、十六进制转换成十进制
方法:按权相加十进制转换成二进制、八进制、十六进制步骤:首先进行整数部分转换,然后进行小数部分转换。(1)整数部分转换原理:方法:连续除以基,从低到高记录余数,直至商为0语言程序设计教程第一章预备知识C整数部分转换举例例把十进制数59转换成二进制数5922921427232120(59)10=(111011)2110111111011余余余余余余第一次得到的余数是最低位最后得到的余数是最高位例把十进制数159转换成八进制数1598198280(159)10=(237)8237余7余3余2例把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161CB余11余12余1语言程序设计教程第一章预备知识C
(2)小数部分转换原理:方法:连续乘以基,从高到低记录整数部分,直至结果的小数部分为0
在十进制的小数部分转换中,有时连续乘以2不一定能使小数部分等于0,这说明该十进制小数不能用有限位二进制小数表示。这时,只要取足够多的位数,使其误差达到所要求的精度就可以了。
例将十进制数0.8125转换成二进制
0.8125×2=1.625(b1=1)最高小数位
0.625×2=1.25(b2=1)
0.25×2=0.5(b3=0)
0.5×2=1.0(b4=1)最低小数位
所以(0.8125)10
=(0.1101)2注意:对于小数部分的转换式中的整数不参加连乘,第一次乘以2所得到的整数部分是二进制数小数的最高位,最后所得到的整数部分是二进制数小数的最低位。例将十进制数0.8123转换成二进制
0.8123×2=1.6246(b1=1)最高小数位
0.6246×2=1.2492(b2=1)
0.2492×2=0.4984(b3=0)
0.4984×2=0.9968(b4=0)最低小数位
…………
所以(0.8123)10
≈(0.1100)2例将十进制数0.8123转换成八进制
0.8123×8=6.4984(b1=6)最高小数位
0.4984×8=3.9872(b2=3)
0.9872×8=7.8976(b3=7)
0.8976×8=7.1808(b4=7)最低小数位
…………
所以(0.8123)10
≈(0.6377)8语言程序设计教程第一章预备知识C二进制八进制
方法:从小数点开始,分别向左、右按3位分组转换成对应的八进制数字字符,最后不满3位的,则需补0。
二进制、八进制、十六进制之间的转换000~0001~1010~2011~3100~4101~5110~6111~7例将二进制数(1101101.10101)2转换成八进制数所以(1101101.10101)2
=(155.52)8二进制数:
001
101
101.101
0101八进制数:55.52语言程序设计教程第一章预备知识C八进制二进制
方法:将每位八进制数用3位二进制表示即可。
二进制、八进制、十六进制之间的转换000~0001~1010~2011~3100~4101~5110~6111~7例将八进制数(345.64)8转换成二进制数所以(345.64)2
=(11100101.1101)2八进制数:3
4
5.6
4011二进制数:100101.110100语言程序设计教程第一章预备知识C二进制十六进制
方法:从小数点开始,分别向左、右按4位分组转换成对应的十六进制数字字符,最后不满4位的,则需补0。
二进制、八进制、十六进制之间的转换例将二进制数(1101101.10101)2转换成16进制数所以(1101101.10101)2
=(6D.A8)16二进制数:
0110
1101.1010
10006十六进制数:D.A80000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F语言程序设计教程第一章预备知识C十六进制二进制
方法:将每位十六进制数用4位二进制表示即可。
二进制、八进制、十六进制之间的转换例将十六进制数(A9D.6C)16转换成二进制数所以(A9D.6C)2
=(101010011101.011011)2十六进制数:A
9
D.6
C1010二进制数:0000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F10011101.01101100语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围真值与机器数
真值:一个带符号数由两部分组成:一部分表示数的符号,另一部分表示数的数值。一般,直接用正号“+”和负号“-”来表示符号的二进制数,叫做符号数的真值。
机器数:计算机中的数是用二进制来表示的,数的符号也是用二进制来表示的。把一个数连同其符号在内在机器中的表示加以数值化,这样的数称为机器数。
一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。
真值:+1011(+11)-1011(-11)机器数:0101111011数值符号数值符号
机器数的表示形式原码补码反码语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围原码原码又称为“符号数值表示”。在以原码形式表示的正数和负数中,第1位表示符号位,对于正数,符号位记为0,对于负数,符号位记为1,其余各位表示数值部分。例:N1=+10011N2=-01010[N1]原=010011[N2]原=101010
根据上述原码形成规则,一个n位的整数N(包含一位符号位)的原码一般表示为:
N0≤N<2n-1[N]原=
2n-1
-N-2n-1
<N≤0语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围原码
对于这样的n位整数其原码表示的数的范围为:-(2n-1-1)~(2n-1
-1)。字节(8位)数的范围:-127--127111………1n-1个1011………1n-1个1语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围原码总结:当N为正数时,[N]原和N的区别只是增加一位用0表示的符号位。由于在数的左边增加一位0对该数的数值并无影响,所以[N]原就是N本身。当N为负数时,[N]原和N的区别是增加一位用1表示的符号位。在原码表示中,有两种不同形式的0,即:
[+0]原=000…0[-0]原=100…0语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围反码反码又称为“对1的补数”。用反码表示时,左边第一位也是符号位,符号位为0代表正数,符号位为1代表负数,对于负数,反码的数值是将原码数值按位求反,而对于正数,反码和原码相同。所以,反码数值的形成与它的符号位有关例:N1=+10011N2=-01010[N1]反=010011[N2]反=110101
根据上述反码形成规则,一个n位的整数N(包含一位符号位)的反码一般表示为:
N0≤N<2n-1[N]反=
(2n-1)+
N-2n-1
<N≤0语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围反码
对于这样的n位整数其反码表示的数的范围为:-(2n-1-1)~(2n-1
-1)。100………0n-1个0011………1n-1个1语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围反码总结:正数N的反码[N]反与原码[N]原相同。对于负数N,其反码[N]反的的符号为1,数值部分是将原码数值按位求反。在反码表示中,有两种不同形式的0,即:
[+0]反=000…0[-0]反=111…1语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围补码补码又称为“对2的补数”。在补码表示法中,正数的补码表示同原码和反码的表示是相同的,而负数的补码表示却不同。对于负数的补码,其符号位为1,而数值位是将原码“按位求反,末位加1”。例:N1=+10011N2=-01010[N1]补=010011[N2]补=110110
根据上述补码形成规则,一个n位的整数N(包含一位符号位)的补码一般表示为:
N0≤N<2n-1[N]反=
2n
+
N-2n-1
≤N<
0注意:同原码、反码的区分!!!语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围补码
对于这样的n位整数其补码表示的数的范围为:-2n-1
~(2n-1
-1)。100………0n-1个0011………1n-1个1语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围补码总结:正数N的补码[N]补与原码[N]原和反码[N]反相同。对于负数N,其补码[N]补的的符号为1,数值部分为反码数值加1。在补码表示法中,0的表示形式是唯一的,即:
[+0]补=000…0[-0]补=000…0注意:绝大多数机器数的表示采用补码表示法。象C语言中整数在计算机中就是以其补码的形式存储的。语言程序设计教程第一章预备知识C原码反码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围11111111~01111111(-127~+127)10000000~01111111(-127~+127)10000000~01111111(-128~+127)(用一字节表示数)负数补码转换成十进制数:最高位不动,其余位取反加1例补码:11111001
取反:10000110
加1:10000111=-7<>语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围无符号整数在某些情况下,要处理的数全是正数,此时再保留符号位就没有意义了。我们可以把最高有效位也作为数值处理,这样的数称为无符号数。
16位无符号数的表示范围是:0≤N≤65535,
8位无符号数的表示范围是:0≤N≤255。字符表示法计算机中处理的信息并不全是数,有时需要处理字符或字符串,例如从键盘输入的信息或打印输出的信息都是字符方式输入输出的,因此,计算机必须能表示字符(例如,C语言中可通过定义字符型变量来存储字符)。字符包括:语言程序设计教程第一章预备知识C1.3机器数的表示形式及其表示范围字符表示法
字母:A、B、…、Z,a、b、…、z;数字:0、1、…、9;专用字符:+、-、﹡、∕、↑、SP(space空格)、…
非打印字符:BEL(Bell响铃)、LF(LineFeed换行)、CR(CarriageReturn回车)、…
这些字符在机器里必须用二进制数来表示。计算机中常采用美国信息交换标准代码ASCII(AmericanStandardCodeforInformationInterchange)来表示。这种代码用一个字节(8位二进制码)来表示一个字符,其中低7位为字符的ASCII值,最高位一般用作校验位。在附录5中给出了常用字符的ASCII值。语言程序设计教程第一章预备知识C1.3二进制数的位运算逻辑变量
其值只能有0或1两种取值的变量“与”运算(AND)
“与”运算又称为逻辑乘,可用符号“·”或“∧”来表示,C语言中用“&”来表示。如有A、B两个逻辑变量,可能有的取值情况只有4种。位运算主要包括:与(AND)、或(OR)、非(NOT)、异或(XOR)ABA&B000010100111结论:即只有A、B两个变量取值均为1,则它们“与”运算的结果才为1,其它均为0。
语言程序设计教程第一章预备知识C1.3二进制数的位运算“或”运算(OR)
“或”运算又称为逻辑加,可用符号“+”或“∨”来表示,C语言中用“|”来表示。如有A、B两个逻辑变量,可能有的取值情况只有4种。ABA&B000011101111结论:即A、B变量中只要一个变量取值为1,则它们“或”运算的结果就是1。
语言程序设计教程第一章预备知识C1.3二进制数的位运算“非”运算(NOT)
“非”运算又称为逻辑反,C语言中用“~”来表示。A~A0110结论:即将A的值求反。
语言程序设计教程第一章预备知识C1.3二进制数的位运算“异或”运算(XOR)
“异或”运算可用符号“⊕
”来表示,C语言中用“^”来表示。如有A、B两个逻辑变量,可能有的取值情况只有4种。ABA^B000011101110结论:即当两个变量的取值相异时,则它们“异或”运算的结果就是1,相同则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遗址工程保护施工方案(3篇)
- 铁路疏散通道施工方案(3篇)
- 陵园及公墓施工方案(3篇)
- 餐饮营销方案实施作用(3篇)
- 26年失能老人心理状态科普
- 医学26年:胰腺囊性肿瘤诊疗 查房课件
- 26年润肤乳选择规范课件
- 曲阜文化主题教育-1
- 学生安全行为管理培训
- 消化道手术后疼痛管理
- 十大零容忍培训
- 分式方程的解法课件北师大版数学八年级下册
- 河南近10年中考真题数学2014-2023年含答案
- 江苏2023年09月江苏盐城东台市机关事业单位转任公务员和选聘18人2023年国家公务员考试考试大纲历年真题笔试历年高频考点试题含答案带详解
- 二手商用车鉴定评估技术规范(轻型、微型载货车版)
- 2023电力变压器加速度法振动检测技术规范
- 问卷的分析与调研报告
- 九年级数学中考专题训练:二次函数综合压轴题(平移问题)
- 小型液压机液压系统设计
- 玉米的综合利用玉米皮的综合利用
- GB/T 12706.1-2020额定电压1 kV(Um=1.2 kV)到35 kV(Um=40.5 kV)挤包绝缘电力电缆及附件第1部分:额定电压1 kV(Um=1.2 kV)和3 kV(Um=3.6 kV)电缆
评论
0/150
提交评论