




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C基本数据类型与基本输入输出2.1数据在计算机中的表示1.二进制二进制数中只有两个数字符号0与1,其特点是“逢二进一”。与十进制数一样,在二进制数中,每一个数字符号(0或1)在不同的位置上具有不同的值,各位上的权值是基数2的若干次幂。2.1.1计算机记数法(1)十进制整数转换成二进制整数
十进制整数转换成二进制整数采用“除2取余法”。具体作法为:将十进制数除以2,得到一个商数和一个余数;再将商数除以2,又得到一个商数和一个余数;继续这个过程,直到商数等于零为止。每次得到的余数(必定是0或1)就是对应二进制数的各位数字。但必须注意:第一次得到的余数为二进制数的最低位,最后一次得到的余数为二进制数的最高位。(2)十进制小数转换成二进制小数
十进制小数转换成二进制小数采用“乘2取整法”。具体作法为:用2乘十进制小数,得到一个整数部分和一个小数部分;再用2乘小数部分,又得到一个整数部分和一个小数部分;继续这个过程,直到余下的小数部分为0或满足精度要求为止。最后将每次得到的整数部分(必定是0或1)从左到右排列即得到所对应的二进制小数。(3)一般的十进制数转换成二进制数
为了将一个既有整数部分又有小数部分的十进制数转换成二进制数,可以将其整数部分和小数部分分别转换,然后再组合起来。2.十六进制十六进制数中有十六个数字符号0~9以及A、B、C、D、E、F,其特点是“逢十六进一”。其中符号A、B、C、D、E、F分别代表十进制数10、11、12、13、14、15。与十进制计数一样,在十六进制数中,每一个数字符号(0~9以及A、B、C、D、E、F)在不同的位置上具有不同的值,各位上的权值是基数16的若干次幂。(1)十进制整数转换成十六进制整数
十进制整数转换成十六进制整数采用“除16取余法”。具体作法为:将十进制数除以16,得到一个商数和一个余数;再将商数除以16,又得到一个商数和一个余数;继续这个过程,直到商数等于零为止。每次得到的余数(必定是0~9或A~F之一)就是对应十六进制数的各位数字。但必须注意:第一次得到的余数为十六进制数的最低位,最后一次得到的余数为十六进制数的最高位。(2)十进制小数转换成十六进制小数
十进制小数转换成十六进制小数采用“乘16取整法”。具体作法为:用16乘十进制小数,得到一个整数部分和一个小数部分;再用16乘小数部分,又得到一个整数部分和一个小数部分;继续这个过程,直到余下的小数部分为0或满足精度要求为止。最后将每次得到的整数部分(必定是0~9或A~F之一)从左到右排列即得到所对应的十六进制小数。(3)一般的十进制数转换成十六进制数
在将一个十进制数转换成十六进制数时,需要将整数部分和小数部分分别进行转换。3.八进制在八进制数中有八个数字符号0~7,其特点是“逢八进一”。在八进制数中,每一个数字符号(0~7)在不同的位置上具有不同的值,各位上的权值是基数8的若干次幂。4.各种计算机记数制之间的转换
十进制
二进制
八进制
十六进制
基
数102816
位
权10K2K8K16K
数字符号0~90,10~70~9与A~F
十进制
二进制
八进制
十六进制0123456789101112131415160110111001011101111000100110101011110011011110111110000012345671011121314151617200123456789ABCDEF10(1)十六进制数与八进制数转换成二进制数
十六进制数转换成二进制数的规律是:每位十六进制数用相应的四位二进制数代替。(2)二进制数转换成十六进制数或八进制数
二进制数转换成十六进制数的规律是:从小数点开始,向前每四位一组构成一位十六进制数;向后每四位一组构成一位十六进制数,当最后一组不够四位时,应在后面添0补足四位。1.正负数的表示在数学中,一个数的正号用“+”表示,负号用“-”表示。但在计算机中分别用符号“0”和“1”表示。一般将整个二进制数的最高位定为二进制数的符号位,符号位为“0”时表示正数,符号位为“1”时表示负数。
如果用1个字节(即8个二进制位)表示一个无符号的数,由于不考虑数的符号问题,1个字节中的8个二进制位都可以用来表示数值,因此,计算机中的1个字节可以表示的最大无符号数为255(即8位全是“1”)。
如果用1个字节表示一个有符号的整数,由于最高位为符号位,具体表示数值的只有7位。在这种情况下,所能表示的数值范围为-127~127。2.1.2计算机中数的表示如果用2个字节(即16个二进制位)表示一个无符号的数,由于不考虑数的符号问题,2个字节的16个二进制位都可以用来表示数值,因此,计算机中的2个字节(16个二进制位)可以表示的最大无符号数为65535(即16位全是“1”)。
如果用2个字节(即16个二进制位)表示一个有符号的整数,由于最高位为符号位,具体表示数值的只有15位。在这种情况下,所能表示的数值范围为-32767~32767。2.定点数
所谓定点数是指小数点位置固定的数。在计算机中,通常用定点数来表示整数与纯小数,分别称为定点整数与定点小数。(1)定点整数
在定点整数中,一个数的最高二进制位是符号位,用以表示数的符号;而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位。因此,在一个定点整数中,符号位右边的所有二进制位数表示的是一个整数值。(2)定点小数
在定点小数中,一个数的最高二进制位是符号位,用以表示数的符号;而小数点的位置默认为在符号位的后面,它也不单独占一个二进制位。因此,在一个定点小数中,符号位右边的所有二进制位数表示的是一个纯小数。3.原码、反码、补码与偏移码
不管是定点整数还是定点小数,它们均是有符号的数,最高二进制位是符号位。下面通过一个例子来看一下对二进制定点数作加减运算时的情况。下面介绍二进制定点数在计算机中的四种表示法:原码、反码、补码与偏移码。
(1)原码
所谓原码就是前面所介绍的二进制定点数表示。即原码的符号位在最高位,“0”表示正,“1”表示负,数值部分按一般的二进制形式表示。(2)反码
反码表示法规定:正数的反码和原码相同;负数的反码是对该数的原码除符号位外各位取反(即将“0”变为“1”,“1”变为“0”)。(3)补码
补码表示法规定:正数的补码和原码相同;负数的补码是在该数的反码的最后(即最右边)一位上加1。
(4)偏移码
为了便于定点数的运算,计算机中的定点数除了可以用补码表示外,还可以用偏移码表示。偏移码有时简称移码。4.浮点数
对于既有整数部分、又有小数部分的数,由于其小数点的位置不固定,一般用浮点数表示。在计算机中,通常所说的浮点数就是指小数点位置不固定的数。
对于既有整数部分又有小数部分的二进制数P可以表示成如下形式:P=S×2N其中S为一个二进制定点小数,称为P的尾数;N为一个二进制定点整数,称为P的阶码,它反映了二进制数P的小数点的实际位置。2.2C语言常量在C语言中,有三种类型的整型常量:基本整型常量、长整型常量、无符号整型常量。不管哪种类型的整型常量,在计算机中都用二进制补码表示,并且最高二进制位为符号位,“0”表示正,“1”表示负。2.2.1整型常量在C语言中,不管是哪种类型的整型常量,都可以用三种数制表示:(1)十进制整型常量。包括的符号有0~9,+与-。对于正整数,前面的“+”号可以省略。例如,+345,345,580,-234都是合法的整型常量,其中+345与345是等值的。(2)十六进制整型常量。以0x开头,包括的符号有0~9与A~F(或a~f)。其中英文字母A(a)表示十进制值10,英文字母B(b)表示十进制值11,英文字母C(c)表示十进制值12,英文字母D(d)表示十进制值13,英文字母E(e)表示十进制值14,英文字母F(f)表示十进制值15。(3)八进制整型常量。以0(零)开头,包括的符号有0~7。在八进制整型常量中,是不允许出现数字8与9的。在C语言中,实型常量有以下两种表示形式(1)十进制数形式
在十进制数形式中,可以包括符号“+”与“-”,0~9十个数字以及小数点“.”。必须注意,在十进制数形式中,小数点是必须要有的。
(2)指数形式(科学记数法)
在指数形式中,可以包括符号“+”与“-”,0~9十个数字,小数点“.”以及e(或E)。其中e(或E)后面应为整数。2.2.2实型常量在使用指数形式时要注意以下两点:
①在符号e的前面必须要有数字。②在符号e的后面必须为整数,即不能是带有小数点的实型数。在C语言中,字符常量是指由一对单引号(单撇号)括起来的一个字符在C语言中还定义了一些特殊字符,又称为转义字符,它们都是以反斜杠开头的'\n'换行'\r'回车'\b'退格'\t'制表(横向跳格)'\''单引号(单撇号)'\"'双引号(双撇号)'\ddd'1~3位八进制数所代表的ASCII码字符'\xhh'1~2位十六进制数所代表的ASCII码字符'\f'走纸换页2.2.3字符型常量所谓变量,是指在程序执行过程中其中的值可以改变的量。C程序中的变量实际上是存储单元,它对应于计算机中的某个内存空间。2.3C变量及其定义VisualC++6.0环境下的C语言中基本数据类型存储情况类型类型标识符长度(字节)数值范围整型无符号整型短整型无符号短整型长整型无符号长整型字符型无符号字符型单精度型双精度型intunsigned[int]short[int]unsignedshort[int]long[int]unsignedlong[int]charunsignedcharfloatdouble4422441148-2147483648~21474836470~4294967295-32768~327670~65535-2147483648~21474836470~4294967295-128~1270~2553.4×10-38~3.4×1038(绝对值)1.7×10-308~1.7×10308(绝对值)在C语言中,变量名的命名要符合下列两个规则:(1)变量名必须以字母或下划线开头,后面可以跟若干个字母、数字或下划线;(2)变量名中的字符总个数一般不要超过8个。但要注意,不同的编译系统对此可能有不同的规定。在C程序中,用于存放整型数据的变量称为整型变量。
在C语言中,可以定义基本整型、长整型、短整型和无符号整型等四种类型的整型变量
2.3.1整型变量(1)基本整型变量
定义基本整型变量的形式如下:int变量表列;(2)长整型
定义长整型变量的形式如下:long[int]变量表列;其中int可以省略。(3)短整型
定义短整型变量的形式如下:short[int]变量表列;其中int可以省略。(4)无符号整型
定义无符号基本整型变量的形式如下:unsigned[int]变量表列;其中int可以省略。定义无符号长整型变量的形式如下:
unsignedlong[int]变量表列;其中int可以省略。
定义无符号短整型变量的形式如下:unsignedshort[int]变量表列;其中int可以省略。①在VisualC++6.0环境下的C语言中,整型、无符号整型、长整型、无符号长整型的变量都需要占4个字节,而短整型与无符号短整型变量占2个字节,用于存放比较小的整型数据。②一个类型说明语句可以同时定义多个同类型的变量,各变量之间用逗号“,”分隔。多个同类型的变量也可以用多个类型说明语句定义。③用类型说明语句定义的变量只是说明了为这些变量分配了存储空间,以便用于存放与之相同类型的数据,在未对这些变量赋值前,这些变量中(即存储空间中)的值是随机的。
④
C语言允许在定义变量的同时为变量赋初值。⑤由于整型变量所占的字节数有限,因此,它们所能存放的整数有一定的范围。在C程序中,用于存放实型数据的变量称为实型变量。
在C语言中,实型变量有单精度与双精度两种。2.3.2实型变量单精度实型变量的定义形式如下:float变量表列;
双精度型变量的定义形式如下:double变量表列;字符型变量用于存放字符常量。
字符型变量的定义方式如下:char变量表列;2.3.3字符型变量数据的输入与输出应包括以下几项:
①输入(出)的设备
②输入(出)的格式
③输入(出)的内容在C语言中,键盘是标准输入设备,显示器是标准输出设备。2.4C语言中基本输入与输出函数格式输出的一般形式如下:printf("格式控制",输出表);
其中格式控制部分要用一对双撇号括起来,它用于说明输出项目所采用的格式。输出表中的各项目指出了所要输出的内容。2.4.1格式输出函数1.整型格式说明符(1)十进制形式
用于输出十进制形式的整型数据。其格式说明符为
%d或
%md与%ld或
%mld用于基本整型与长整型%u或
%mu与
%lu或
%mlu用于无符号基本整型与无符号长整型(2)八进制形式
用于输出八进制形式的整型数据。其格式说明符为%o或
%mo与%lo或
%mlo用于基本整型与长整型(3)十六进制形式
用于输出十六进制形式的整型数据。其格式说明符为%x或
%mx与%lx或
%mlx用于基本整型与长整型2.实型格式如果以十进制数形式输出实型数据,其格式说明符为
%f或
%m.nf
如果以指数形式输出实型数据,其格式说明符为%e或
%m.ne3.字符型格式说明符字符型数据的格式说明符为
%c或
%mc
其中m表示输出的宽度,即在这种情况下,在输出字符的前面将要补m-1个空格(1)输出表中可以有多个输出项目,但各输出项目之间要用“,”分隔。各输出项目可以是常量、变量以及表达式。(2)格式输出函数中的“格式控制”是一个字符串,其中每一个%后面的字符是格式说明符,用于说明相应输出数据的输出格式,而每一个格式说明符的结束符分别为d(整型)、f(实型)、c(字符型)、s(字符串,将在后面介绍)。而格式控制中除格式说明符外的其它字符将按原样输出。(3)在输出格式说明符中,如果带有宽度说明,则在左边没有数字的位置上用空格填满(即输出的数字是右对齐)。但如果在宽度说明前加一个负号(-),则输出为左对齐,即在右边补空格。(4)在格式输出语句中,格式控制中的各格式说明符与输出表中的各输出项目在个数、次序、类型等方面必须一一对应,否则会造成错误的输出结果。(5)格式输出函数的执行过程如下:
首先,在计算机内存中开辟一个输出缓冲区,用于存放输出项目表中各项目数据。
然后,依次计算项目表中各项目(常量或变量或表达式)的值,并按各项目数据类型应占的字节数依次将它们存入输出缓冲区中。
最后,根据“格式控制”字符串中的各格式说明符依次从输出缓冲区中取出若干字节的数据(如果是非格式说明符,则将按原字符输出),转换成对应的十进制数据进行输出。其中从输出缓冲区中取多少个字节的数据是按照对应格式说明符说明的数据类型。格式输入的一般形式如下:scanf("格式控制",内存地址表);2.4.2格式输入函数1.整型格式说明符
整型格式说明符有以下几种:(1)十进制形式
用于输入十进制形式的整型数据。其格式说明符为
%d或
%md与%ld或
%mld用于一般整型与长整型%u或
%mu与%lu或
%mlu用于无符号基本整型与无符号长整型(2)八进制形式
用于输入八进制形式的整型数据。其格式说明符为%o或
%mo与%lo或
%mlo用于一般整型与长整型(3)十六进制形式
用于输入十六进制形式的整型数据。其格式说明符为%x或
%m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级上册数学教案-角的初步认识 (6)-西师大版
- 2025年宠物领养合同模板电子版
- 三年级下册数学教案-1.1 两位数乘整十数的口算-苏教版
- 薪酬培训服务协议书(2篇)
- 2023年生麻生产投资申请报告
- 2024年局域网安全系统项目资金申请报告
- 2025年惠州城市职业学院单招职业倾向性测试题库学生专用
- 2025年广东省安全员B证考试题库及答案
- 2025年湖北省咸宁市单招职业倾向性测试题库一套
- 二零二五年度煤炭开采居间合同与智能化矿山建设协议
- 五年级上册信息技术教学计划华科版
- 机器人传感器PPT完整全套教学课件
- 初一语文下册:阅读理解知识点整理
- 营销部安全生产责任制
- CSM工法双轮铣水泥土搅拌墙专项施工方案
- 【讲座】高三英语高效二轮备考讲座课件
- 定点医疗机构接入验收申请表
- 小羊诗歌大全1479首(小羊喝水扩句)
- 2022-2023学年辽宁省鞍山市普通高中高一年级下册学期第一次月考数学(A卷)试题【含答案】
- 中国农村居民储蓄行为研究共3篇
- 华为鸿蒙深度研究
评论
0/150
提交评论