1、7信息有两种表示方式:Analog Data(模拟数据)(模拟数据)信息的连续(continuous)表示,模拟(analogous to)真实的信息。例如,在收音广播中,我们用相似的电磁波(即模拟信号)来模拟声波。模拟信号广泛用在电子化早期。Digital Data(数字数据)(数字数据)信息的离散(discrete)表示,将信息分成一个个离散的“部分”。现代广泛采用数字信号。模拟信息和数字信息模拟信息和数字信息8模拟信息和数字信息模拟信息和数字信息温度计是模拟设备还是数字设备?模拟设备。因为水银柱的高度是与温度成正比的连续值。9计算机的数据表示是离散的,所以我们需要将真实 世界的信息 离散
2、化,或叫做:数字化(数字化(Digitize)将连续的信息分成一个个部分,分为表示每个部分。(主要是图像、音频、视频那里用)模拟信息和数字信息模拟信息和数字信息10电子信号(电子信号(Electronic Signals)模拟信号(模拟信号(Analog signal)数字信号(数字信号(Digital signal)Analog SignalDigital Signal信号强度连续变化信号强度有限个值组成注:信号强度用电压的伏特数(voltage)表示。11电子信号的特性:电子信号的特性:1.模拟信号(analog signal)的电压值连续波动。2.数字信号(digital signal)
3、只有高低电压两种,对应于0和1。3.任何电子信号(模拟或数字)在线路中传输时由于能量耗散都会退化(degrade)。4.信号的电压值受环境中的电磁干扰的影响。注:数字信号有多种表示,我们可用电压值的高低表示0和1,也可用两个不同频率的信号段来表示0和1。电子信号(电子信号(Electronic Signals)12特性3、4 产生了电子信号的失真(distortion):tt电子信号(电子信号(Electronic Signals)原模拟信号失真的信号原数字信号失真的信号在抗衰减和干扰上,哪个更健壮?13数字信号比模拟信号更健壮(robust),即抗衰减和干扰的能力强,因为它只有两个双稳态:高
4、、低电压。电子信号(电子信号(Electronic Signals)区分阈值高电压表示1低电压表示0现在广泛采用数字信号!14信息的二进制表示信息的二进制表示计算机如何用二进制(存储)表示信息?1 bit 表示2个事物(使用0、1);2 bits 表示4个事物;.n bits 表示?个事物;区分信息(存储)的表示和显示:表示指计算机内部的存储形式;显示指用显示硬件在屏幕不同坐标上投射色彩点(像素)。字符的字符的ASCII码码 vs 字符点阵显示字符点阵显示字符的存储表示是它的ASCII码因计算机只能存储数字信息计算机还存储了字符的点阵信息(屏幕坐标,打印黑或白的像素点),用于显示它字符:AAS
5、CII码:65A的点阵:显示出来如右图 注:C语言的graphics.h里定义的void putpixel(int x,int y,int color);用于在屏幕上打印一个像素点(图像功能应属于非标准库,每个编译器会提供自己的)数字和字符的表示数字和字符的表示数字正整数容易表示负数?实数?字符用正整数来表示数字和字符是计算机的基本数据数字和字符的表示数字和字符的表示Data TypeDescriptionintInteger(整数)(整数)charCharacter(字符)(字符)floatFloating point(单精度浮点数)(单精度浮点数)doubleDouble precisio
6、n floating point(双精度浮点数)(双精度浮点数)voidVoid(空的)(空的)Basic Data Types in C Language整数的表示整数的表示两种表示法:原码(true code)表示法即符号-数量表示法,直观补码(complement code)表示法可降低计算部件的设计复杂度,用于现代计算机为容易理解,下面的内容先用十进制来说明,然后用二进制。19整数的表示整数的表示符号符号-数量表示法(数量表示法(Signed-Magnitude Representation)符号(sign)表示顺序,数量(magnitude)表示大小它是它是原码(原码(true co
7、de)表示法:表示法:1比特表示符号(比特表示符号(0表表示示+,1表示表示-),其余比特表示数量。),其余比特表示数量。20现代计算机为什么不采用原码表示法表示整数?从硬件的设计复杂度上考虑.在原码中,0有两种表示+0、-0;加减法时需要判断结果的符号。幸运的是,我们有更简单的方法,进一步简化硬件设计的复杂度!整数的表示整数的表示问题的关键:符号。能否不用它?问题的关键:补码的引入正数:不需符号负数:负数+正偏移量 正数整数的表示整数的表示22考虑固定大小的数字(计算机中是这样)。例如,用2位十进制数字表示-50 49:0 49 表示为:0 49 50 99 表示为:-50 -1(即每个负数
8、+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补码的加法:加和两个补码数字,丢掉最高位的进位,其结果是原计算结果的补码。证明?比较证明?比较 a-b 和和 a+(10n-b)补码(补码(Complement Code)?补码补码原码原码25补码的加
9、法:x+y10c=x10c+y10c x,y是正数或负数。补码(补码(Complement Code)26二进制补码二进制补码(Twos Complement)考虑8位的二进制数。0000000001111111 表示 0127 1000000011111111 表示-128-1 观察补码:正数的最高位是0,负数的最高位是1。补码(补码(Complement Code)二进制整数 00001010的补码是?二进制整数-00001010 的补码是?二进制补码 10001010所表示的数值是?补码(补码(Complement Code)补码(补码(Complement Code)求负数的补码-x(
10、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(你能证明吗?)29二进制补码二进制补码(Twos Complement)x2c =x,if 2n-1 x 0 x2c =2n+x,if 0 x -2n-1 n表示二进制数字的固定大小,即n位数;x2c 表示x的补码补码(补码(Complement Code)负数负数正数正数正数补码正数补码负数补
11、码负数补码-+补码(补码(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,76832,767)long 4B-231231-1 (-2,147,483,648-2,147,483,647)longlong8B-263263-1例子例子:Integer Types in C Language31补码的加法:加和两个补码数字,丢掉最高位的进位(如有),其结果是原计算结果的补码。数
12、值数值 二进制补码二进制补码 -127 10000001+1 +00000001 -126 10000010 补码(补码(Complement Code)比较比较 a-b 和和 a+(2n-b)32补码的加法:x+y2c=x2c+y2c x,y是正数或负数。补码(补码(Complement Code)33补码(补码(Complement Code)计算机使用固定大小的数字,当计算结果超出此范围时,会产生 Overflow(溢出)(溢出)考虑8位二进制数字,原码(十进制)原码(十进制)二进制补码二进制补码 127 01111111+3 +00000011 130 10000010 注释:1000
13、0010是-126的补码,不是130;8 bits表示-128127,130无法被表示;只有在不溢出时,原码和补码才是一一对应!补码(补码(Complement Code)补码的好处:补码的好处:无符号位,因此加减法不用考虑结果的+、-号。0只有一种表示 比起原码,它大大简化了计算部件的设计复杂度!补码(补码(Complement Code)补码原码转换简单,由硬件完成显示时用,带+-号存储、运算时用不带+-号原数值的加减法在补码中有统一的加法法则补码加法法则补码加法法则:加和两个补码数字,丢掉最高位的进位(如有),:其结果是原计算结果的补码。性质:和的补码等于补码的和和的补码等于补码的和补码
14、和原码一一对应补码和原码一一对应36实数的表示实数的表示实数(实数(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+d2*2-2+.+dn*2-n实数的表示实数的表示 d1*2-1+d2*2-2+.+dn*2-n *2 整数:整数:d
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1