计算机基础 数据表示(上)_第1页
计算机基础 数据表示(上)_第2页
计算机基础 数据表示(上)_第3页
计算机基础 数据表示(上)_第4页
计算机基础 数据表示(上)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机基础第第3 3章章 数据表示数据表示( (上上) )信息学院信息学院 王悦王悦(信管)(信管)2012011 1秋秋24信息层1.计算机为什么使用二进制数字系统?2.如何用二进制数存储表示信息?提纲提纲模拟信息和数字信息(放在音频那里讲)数字化整数的补码表示实数的表示(原码)文本的表示ASCII码、Unicode码字符编码的发展历史和驱动力重点重点模拟信息和数字信息两者的区别;为什么现代计算机采用数字数据;数字化的概念计算机信息表示与二进制的关系区分信息(存储)表示与信息的显示熟练掌握整数的补码表示提出补码的原动力和朴素想法;补码的定义;补码的加减法实数的表示二进制小数符号、尾数、指数表

2、示法文本的表示ASCII码Unicode码5数据和计算机数据和计算机 计算机是多媒体(multimedia) 设备,它存储、显示、帮助修改:Numbers(数字)(数字)Text(文本)(文本)Audio(音频、录音)(音频、录音)Images(图像)(图像),Graphics (图形)(图形)Video(视频、录像)(视频、录像)所有数据(data)以二进制形式在计算机中表示!6模拟信息和数字信息模拟信息和数字信息计算机存储的数字是有限的,如何表示“无限”的世界(信息量无限、精度无限)? 想想如何表示 ? 我们只表示有限的数量和有限的精度,满足我们的需要就可以了 。在计算机中用3.14159

3、27表示 。7信息有两种表示方式:Analog Data(模拟数据)(模拟数据) 信息的连续(continuous)表示,模拟(analogous to)真实的信息。例如,在收音广播中,我们用相似的电磁波(即模拟信号)来模拟声波。模拟信号广泛用在电子化早期。 Digital Data(数字数据)(数字数据) 信息的离散(discrete)表示,将信息分成一个个离散的“部分” 。现代广泛采用数字信号。模拟信息和数字信息模拟信息和数字信息8模拟信息和数字信息模拟信息和数字信息温度计是模拟设备还是数字设备?模拟设备。因为水银柱的高度是与温度成正比的连续值。9计算机的数据表示是离散的,所以我们需要将真

4、实 世界的信息 离散化,或叫做:数字化(数字化(Digitize) 将连续的信息分成一个个部分,分为表示每个部分。(主要是图像、音频、视频那里用)模拟信息和数字信息模拟信息和数字信息10电子信号(电子信号(Electronic Signals)模拟信号(模拟信号(Analog signal)数字信号(数字信号(Digital signal)Analog SignalDigital Signal信号强度连续变化信号强度有限个值组成注:信号强度用电压的伏特数(voltage)表示。11电子信号的特性:电子信号的特性:1. 模拟信号(analog signal)的电压值连续波动 。2. 数字信号(d

5、igital signal) 只有高低电压两种,对应于0和1。3. 任何电子信号(模拟或数字)在线路中传输时由于能量耗散都会退化( degrade)。4. 信号的电压值受环境中的电磁干扰的影响。 注:数字信号有多种表示,我们可用电压值的高低表示0和1,也可用两个不同频率的信号段来表示0和1。电子信号电子信号(Electronic Signals)12特性3、4 产生了电子信号的失真(distortion):tt电子信号电子信号(Electronic Signals)原模拟信号失真的信号原数字信号失真的信号在抗衰减和干扰上,哪个更健壮?13数字信号比模拟信号更健壮(robust),即抗衰减和干扰

6、的能力强,因为它只有两个双稳态:高、低电压。电子信号电子信号(Electronic Signals)区分阈值高电压表示1低电压表示0现在广泛采用数字信号!14信息的二进制表示信息的二进制表示计算机如何用二进制(存储)表示信息?1 bit 表示2个事物(使用0、1);2 bits 表示4个事物;.n bits 表示?个事物; 区分信息(存储)的表示和显示:区分信息(存储)的表示和显示: 表示指计算机内部的存储形式; 显示指用显示硬件在屏幕不同坐标上投射色彩点(像素)。字符的字符的ASCII码码 vs 字符点阵显示字符点阵显示字符的存储表示是它的ASCII码因计算机只能存储数字信息计算机还存储了字

7、符的点阵信息(屏幕坐标, 打印黑或白的像素点),用于显示它字符:AASCII码:65A的点阵:显示出来如右图 注:C语言的graphics.h里定义的void putpixel(int x,int y,int color); 用于在屏幕上打印一个像素点(图像功能应属于非标准库,每个编译器会提供自己的)数字和字符的表示数字和字符的表示数字正整数容易表示负数? 实数?字符用正整数来表示数字和字符是计算机的基本数据数字和字符的表示数字和字符的表示Data TypeDescriptionintInteger(整数)(整数)charCharacter(字符)(字符)floatFloating point

8、 (单精度浮点数)(单精度浮点数)doubleDouble precision floating point(双精度浮点数)(双精度浮点数)voidVoid(空的)(空的)Basic Data Types in C Language整数的表示整数的表示两种表示法:原码(true code)表示法即符号-数量表示法,直观补码(complement code)表示法可降低计算部件的设计复杂度,用于现代计算机为容易理解,下面的内容先用十进制来说明,然后用二进制。19整数的表示整数的表示符号符号-数量表示法(数量表示法(Signed-Magnitude Representation) 符号(sign)

9、表示顺序, 数量(magnitude) 表示大小它是它是原码(原码(true code)表示法:表示法:1比特表示符号(比特表示符号(0表示表示+,1表示表示-),其余比特表示数量。),其余比特表示数量。20现代计算机为什么不采用原码表示法表示整数?从硬件的设计复杂度上考虑. 在原码中,0有两种表示 +0、-0 ; 加减法时需要判断结果的符号。 幸运的是,我们有更简单的方法,进一步简化硬件设计的复杂度!整数的表示整数的表示问题的关键:符号。能否不用它?问题的关键:符号。能否不用它?补码的引入正数:不需符号负数:负数 + 正偏移量 正数整数的表示整数的表示22考虑固定大小的数字(计算机中是这样)

10、。例如,用2位十进制数字表示 -50 49: 0 49 表示为: 0 49 50 99 表示为:-50 -1 (即每个负数+102) 此表示法称为 补码(补码(Complement Code)表示法。补码(补码(Complement Code)数值数值补码补码23十进制补码(十进制补码(Tens Complement) x10c = x, if 10n/2 x 0 x10c = 10n+x, if 0 x -10n/2n表示十进制数字的固定大小, 即n位数字;x10c 表示x的补码补码(补码(Complement Code)24补码的加法:加和两个补码数字,丢掉最高位的进位,其结果是原计算结果

11、的补码。 证明?比较证明?比较 a-b 和和 a+(10n-b)补码(补码(Complement Code) ?补码补码原码原码25补码的加法:加和两个补码数字,丢掉最高位的进位,其结果是原计算结果的补码。 x + y10c = x10c + y10c x, y是正数或负数。补码(补码(Complement Code)26二进制补码二进制补码(Twos Complement) 考虑8位的二进制数。 0000000001111111 表示 0127 1000000011111111 表示 -128-1 观察补码:正数的最高位是0,负数的最高位是1。补码(补码(Complement Code)二进

12、制整数 00001010的补码是?二进制整数 -00001010 的补码是?二进制补码 10001010所表示的数值是? 补码(补码(Complement Code)补码(补码(Complement Code) 求负数的补码 -x (x0)的二进制补码相当于对x做对位取反,末位加1(证明:-x2c = 2n - x = 2n -1 - x + 1) 已知负数的二进制补码(最高位是1),求该负数 已知y是负数(-x)的二进制补码,即y = 2n - x。求x相当于对y做对位取反,末位加1(证明:x = 2n - y = 2n -1 - y + 1)。 另一法: 对(y-1)做对位取反即得到x(你

13、能证明吗?)29二进制补码二进制补码(Twos Complement) x2c = x, if 2n-1 x 0 x2c = 2n + x, if 0 x -2n-1 n表示十进制数字的固定大小,即n位数字;x2c 表示x的补码补码(补码(Complement Code)负数负数正数正数正数补码正数补码负数补码负数补码补码(补码(Complement Code)Integer TypeSizeRangeint2B or 4B-215215-1 (-32,76832,767)-231231-1 (-2,147,483,648-2,147,483,647)short2B-215215-1 (-32

14、,76832,767)long 4B-231231-1 (-2,147,483,648-2,147,483,647)longlong8B-263263-1例子例子: Integer Types in C Language31补码的加法:加和两个补码数字,丢掉最高位的进位(如有),其结果是原计算结果的补码。 数值数值 二进制补码二进制补码 -127 10000001 + 1 + 00000001 -126 10000010 补码(补码(Complement Code)比较比较 a-b 和和 a+(2n-b)32补码的加法:加和两个补码数字,丢掉最高位的进位(如有),其结果是原计算结果的补码。 x

15、 + y2c = x2c + y2c x, y是正数或负数。补码(补码(Complement Code)33补码(补码(Complement Code)计算机使用固定大小的数字,当计算结果超出此范围时,会产生 Overflow(溢出)(溢出) 考虑8位二进制数字, 原码(十进制)原码(十进制) 二进制补码二进制补码 127 01111111+ 3 + 00000011 130 10000010 注释:10000010是-126的补码,不是130; 8 bits表示-128127,130无法被表示;只有在不溢出时,原码和补码才是一一对应!只有在不溢出时,原码和补码才是一一对应!补码(补码(Com

16、plement Code)补码的好处:补码的好处: 无符号位,因此加减法不用考虑结果的+、-号。 0只有一种表示 比起原码,它大大简化了计算部件的设计复杂度!补码(补码(Complement Code)补码原码转换简单,由硬件完成显示时用,带+-号存储、运算时用不带+-号原数值的加减法在补码中有统一的加法法则补码加法法则补码加法法则:加和两个补码数字,丢掉最高位的进位(如有),:加和两个补码数字,丢掉最高位的进位(如有),其结果是原计算结果的补码。其结果是原计算结果的补码。性质:性质:和的补码等于补码的和和的补码等于补码的和补码和原码一一对应补码和原码一一对应36实数的表示实数的表示实数(实数

17、(Real numbers) 由整数部分和小数部分组成。十进制小数点后的位置依次是: 10-1, 10-2, 10-3 例:104.32 = 1*102 + 0*101 + 4*100 + 3*10-1 + 2*10-2二进制小数点后的位置依次是: 2-1, 2-2, 2-3 例:10100.01 = 1*24 + 0*23 + 1*22 + 0*21 + 0*20 + 0*2-1 + 1*2-237如何将十进制实数转换成二进制形式如何将十进制实数转换成二进制形式 ?整数部分:整数部分: 转换算法见第2章。小数部分:小数部分: ?小数数值(与进制无关)小数数值(与进制无关)= d1*2-1 +

18、 d2*2-2 + . + dn*2-n实数的表示实数的表示 d1*2-1 + d2*2-2 + . + dn*2-n *2 整数:整数:d1小数:小数:d2*2-1 + d3*2-2 . + dn*2-n+1d2*2-1 + d3*2-2 . + dn*2-n+1 *2 整数:整数:d2小数:小数:d3*2-1 + d4*2-2 . + dn*2-n+2. . .实数的表示实数的表示390.25 in Dec = ? in Bin0.25*2 = 0.5 0.5*2 = 1.0 0.01 in Bin实数的表示实数的表示400.2 in Dec = ? in Bin0.2*2 = 0.40.

19、4*2 = 0.80.8*2 = 1.6 0.6*2 = 1.2 0.2*2 = 0.4. 0.0011 0011. in Bin实数的表示实数的表示41实数在计算机中的表示:实数在计算机中的表示:1. 将输入的十进制实数转换成二进制实数;2. 二进制进制实数表示成科学记数法;3. 分别存储下科学记数法表示的符号、尾数、指数。 原码存储。讨论:为什么实数不用补码存储?实数的表示实数的表示42实数又叫浮点数(实数又叫浮点数(floating point),十进制实数可),十进制实数可表示为:表示为:例:123.11 = 1.2311*102 = 1231.1*10-1 (小数点是浮动的) sig

20、n: 符号mantissa: 尾数exp (exponent): 即power,指数sign * mantissa * 10exp实数的表示实数的表示43十进制的科学记数法(十进制的科学记数法(Scientific Notation ) 小数点在第1个数字后。例:12001.32708 = 1.200132708*104 或 1.200132708E+4 0.0034的科学记数法是?早期计算机无法显示上标字符,所以用E+n(E-n)表示10n或10-n(这里n是常整数)。实数的表示实数的表示44二进制浮点(二进制浮点(floating point)数可表示为:)数可表示为:例:10100.01

21、 = 1.010001*24 = 1010001*2-2sign: 符号mantissa: 尾数exp (exponent): 即power,指数sign * mantissa * 2exp实数的表示实数的表示45二进制小数的科学记数法(二进制小数的科学记数法(Scientific Notation ) 小数点在第1个数字后。例:10100.01 的科学记数法是 1.010001*24 0.001010的科学记数法是?实数的表示实数的表示46计算机的浮点数存储:计算机的浮点数存储:分为存储二进制科学记数法的分为存储二进制科学记数法的符号(符号(sign), 尾数(尾数(mantissa)和指数

22、()和指数(exponent)。)。以以C语言的语言的float型(型(4 Byte大小)为例:大小)为例: 符号占符号占1 bit 因存储符号位,所以是原码存储。 尾数占尾数占23 bits 指数占指数占8 bits 实数的表示实数的表示实数的表示实数的表示示例示例:20.25(十进制实数十进制实数) = 1.010001*24 (二进制科学记数法二进制科学记数法) 符号位存储0,表示+; 尾数位存储010001(因是科学记数法,所以1. 的位置固定不用存储) 指数存储4+127的二进制数10000011注意:指数范围是-127 128,为了不存符号位,C平移+127,使之变为正数 0 25

23、5(注意这不是补码,因正负数都要做平移)00100010000000000000000010000011实数的表示实数的表示Real Number TypePrecision(精度)(精度) in Significant Digits(有效数字)(有效数字)Size Rangefloat24babout 7 decimal digits4B3.4x10-383.4x1038-3.4x10-38-3.4x1038double53babout 1516 decimal digits8B1.7x10-3081.7x10308-1.7x10-308-1.7x10308long double 65bab

24、out 19 decimal digits10B3.4x10-49323.4x104932-3.4x10-4932-3.4x104932为什么4Byte的float的比同样是4Byte的int表示的数值范围大得多?Real Number Types in C Language实数的表示实数的表示讨论:为什么实数不用补码存储?50文本的表示文本的表示字符(字符(Character):如字母、标点、数字、空格:如字母、标点、数字、空格. 计算机中为每个字符用一个二进制数(叫做字符的编码)来(存储)表示;用显示硬件在屏幕不同坐标上投射色彩点来显示出相应的字型。例:字符A的计算机表示是 0100000

25、1 (1字节的二进制数)字符集(字符集(Character Set) 一组字符和它们对应的编码。各计算机厂商使用同一套字符表示的规范,即标准化。文本的表示文本的表示52ASCII 代表American Standard Code for Information Interchange(美国信息互换标准代码),由美国国家标准学会(ANSI)在1968年定义。使用一个字节(byte)来表示字符的编码。 早期版本用7位表示字符,能表示128个字符。第8位用于校验。 常称为 ASCII。 之后的扩展版本 Extended ASCII 使用了第8位,能表示256个字符。 常称为 ISO-8859-1 或

26、 ISO-Latin。 ASCII字符集字符集53ASCII字符集字符集54031没有字型表示,称为控制字符(控制字符(Control Character)有的系统上,控制字符被用来字型,这不属于ASCII的原规范。练习:用C语言打印0255的字符。ASCII字符集字符集控制字符(控制字符(Control Characters):):Bin Dec Hex Name 中文名中文名0000 0000 0 00 NUL (null) 空字符 0000 0001 1 01 SOH (start of handing) 标题开始 0000 0010 2 02 STX (start of text) 正

27、文开始 0000 0011 3 03 ETX (end of text) 正文结束 0000 0100 4 04 EOT (end of transmission) 传输结束 0000 0101 5 05 ENQ (enquiry) 请求 0000 0110 6 06 ACK (acknowledge) 收到通知 0000 0111 7 07 BEL (bell) 响铃 0000 1000 8 08 BS (backspace) 退格 0000 1001 9 09 HT (horizontal tab) 水平制表符 0000 1010 10 0A LF (NL line feed, new l

28、ine) 换行键 0000 1011 11 0B VT (vertical tab) 垂直制表符 0000 1100 12 0C FF (NP form feed, new page) 换页键 ASCII字符集字符集Bin Dec Hex Name 中文名中文名0000 1101 13 0D CR (carriage字车 return) 回车键 0000 1110 14 0E SO (shift out) 不用切换 0000 1111 15 0F SI (shift in) 启用切换 0001 0000 16 10 DLE (data link escape) 数据链路转义 0001 0001

29、 17 11 DC1 (device control 1) 设备控制1 0001 0010 18 12 DC2 (device control 2) 设备控制2 0001 0011 19 13 DC3 (device control 3) 设备控制3 0001 0100 20 14 DC4 (device control 4) 设备控制4 0001 0101 21 15 NAK (negative acknowledge) 拒绝接收 0001 0110 22 16 SYN (synchronous idle) 同步空闲 0001 0111 23 17 ETB (end of trans. bl

30、ock) 传输块结束 0001 1000 24 18 CAN (cancel) 取消 0001 1001 25 19 EM (end of medium) 介质中断 0001 1010 26 1A SUB (substitute) 替补 0001 1011 27 1B ESC (escape) 溢出 0001 1100 28 1C FS (file separator) 文件分割符 0001 1101 29 1D GS (group separator) 分组符 0001 1110 30 1E RS (record separator) 记录分离符 0001 1111 31 1F US (un

31、it separator) 单元分隔符 ASCII字符集字符集转义字符(转义字符(Escape Character) C语言在源程序的书写上用转义字符来代表控制字符,它们由编译器翻译成ASCII码。转义字符转义字符 意义意义 ASCII码值码值(十进制十进制) a响铃(BEL) 7b 退格(BS) 8f 换页(FF) 12n换行(LF) 10r 回车(CR) 13t 水平制表(HT) 9v 垂直制表(VT) 110 空字符(NULL) 0.ASCII字符集字符集ASCII码足够表示英文字符,但不够表示其它语言和特殊字符(如复杂的数学符号)。ASCII字符集字符集继ANSI制定了ASCII码之后

32、,各个国家定义了自己语言的字符集,它们称为ANSI字符集字符集。 例如,中文的GB2312, GBK, GB18030;日文的JIS。这样的结果是:一个编码在不同国家可表示不同字符!在查看文档前,我们需要指定采用的是哪个国家的字符集。 例如,Internet Explorer浏览器的菜单 “查看”-“编码”。为了将所有的字符集标准化,人们提出了Unicode。ANSI字符集字符集60Unicode(统一码、万国码)(统一码、万国码),学名叫做UCS(Universal Character Set) 我们使用2 bytes(后来扩展到了4 bytes)来统一(unify)表示世界上的每个字符。

33、Unicode是ASCII码的超集(superset):0255是扩展ASCII码的字符集。Unicode可表示多少个字符?Unicode字符集字符集61Unicode的几个字符:Unicode字符集字符集Unicode的中文字符: U+ 0 1 2 3 4 5 6 7 8 9 A B C D E F -4e00 一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏4e10 丐 丑 丒 专 且 丕 世 丗 丘 丙 业 丛 东 丝 丞 丟4e20 丠 両 丢 丣 两 严 並 丧 丨 丩 个 丫 丬 中 丮 丯4e30 丰 丱 串 丳 临 丵 丶 丷 丸 丹 为 主 丼 丽 举 丿4e40 乀 乁 乂 乃 乄 久 乆 乇 么 义 乊 之 乌 乍 乎 乏4e50 乐 乑 乒 乓 乔 乕 乖 乗 乘 乙 乚 乛 乜 九 乞 也4e60 习 乡 乢 乣 乤 乥 书 乧 乨 乩 乪 乫 乬 乭 乮 乯4e70 买 乱 乲 乳 乴 乵 乶 乷 乸 乹 乺 乻 乼 乽 乾 乿 .Unicode字符集字符集Character Types in C Language Character TypeSize Rangechar1B-128127 (-2727-1)unsigned char1B0255 (028-1)wchar_t2B065535 (0216-1)wchar_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论