数值型数据的表示及处理

上传人:z****2 文档编号:201699872 上传时间:2023-04-20 格式:DOCX 页数:6 大小:26.36KB
收藏 版权申诉 举报 下载
数值型数据的表示及处理_第1页
第1页 / 共6页
数值型数据的表示及处理_第2页
第2页 / 共6页
数值型数据的表示及处理_第3页
第3页 / 共6页
资源描述:

《数值型数据的表示及处理》由会员分享,可在线阅读,更多相关《数值型数据的表示及处理(6页珍藏版)》请在装配图网上搜索。

1、原码、反码、补码 数值在计算机中表示形式为机器数,计算机只能识别 0 和 1,使用的是二进制,而在日常生活中 人们使用的是十进制,正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们 绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10 进制) 的实践要比二或三进制计数出现的晚.为了能方便的与二进制转换,就使用了十六进制和八进 制.下面进入正题. 数值有正负之分,计算机就用一个数的最高位存放符号(0 为正,1 为负).这 就是机器数的原码了假设机器能处理的位数为8.即字长为lbyte,原码能表示数值的范围为 (-127-0 +0127)共 256 个.

2、有了数值的表示方法就可以对数进行算术运算.但是很快就发现 用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设 字长为 8bits,( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 =(00000001)原 + (10000001)原= (10000010)原=(-2 )显然不正确(十进制的1减1当然为0)。因为在两个整数的加法运 算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐 位取反就产生了反码 .反码的取值空间和原码相同且一一对应 . 下面是反码的减法运算 : ( 1 )10 - ( 1 ) 1

3、0= ( 1 ) 10+ ( -1 ) 10= (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有 问题. ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = (00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正确。问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零 作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大). 于 是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样

4、 的.在补码中用(-128)代替了(-0),所以补码的表示范围为: (-1280127)共256个. 注意-128没 有相对应的原码和反码, (-128) = (10000000) 补码的加减运算如下: ( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = (00000001)补 + (11111111)补 = (00000000)补 = ( 0 ) 正确 ( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = (00000001) 补+ (11111110)补= (11111111)补 = ( -1 ) 正确 所以补码的设计目的 是: 使符

5、号位能与有效值部分一起参加运算 ,从而简化运算规则. 使减法运算转换为加 法运算,进一步简化计算机中运算器的线路设计。所有这些转换都是在计算机的最底层进行 的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。数值型数据的表示及处理计算机内部的数值型数据都是采用二进制形式来表示的。人们日常已习惯使用十进 制,书写起来很方便,而用二进制书写起来位数长得多,读起来也不一目了然。但用二进 制易于用物理器件实现,运算起来规则简单,所以任何数值型数据在计算机内都是用二进 制表示的。计算机中的数值型数据分成整数和实数两种,下面分别介绍它们的二进制表示 方法。2.1.4.1 整数(定点数)表示 定点数的

6、含义是约定小数点在某一固定位置上,整数可用定点数表示,约定小数点的 位置在数值的最右边。整数分两类:无符号整数和有符号整数。(1) 无符号整数无符号整数常用于表示地址等正整数,可以是8位、 16位、 32位或更多位数。 8位的 正整数的表示范围是0255(28 1), 16位的正整数的表示范围是065535(216 1), 32 位的正整数的表示范围是0232 1。(2)有符号整数 有符号整数使用一个二进制位作为符号位,一般符号位都放在所有数位的最左面一位 (最高位),0”代表正号+”(正数),1”代表负号一”(负数),其余各位用来表示数值的大 小。可以采用不同的方法表示有符号整数,一般有原码

7、、反码和补码。为简化起见,以下 假设只用一个字节来表示一个整数。带符号数表示法与运算带符号数的表示主要有真值、原码、反码、补码 4种表示形式。(1)真值:是某个带符号数的真实值,通常是用十进制表示,+/号表示符号。(2)原码:将真值前面的正(负)号用代码 0(1)表示且放在数值位前面,并且数值 部分用二进制表示。(3)反码:将原码的符号位不变,数值位按位取反。( 4 )补码:在反码的末位加 1 。 在现代计算机中,算术运算都是以补码为基础,操作数是补码的形式表示,运算结果 也是以补码形式表示或存储。 原码表示 数值型数据的原码表示是将最高位作符号位,其余各位用数值本身的绝对值(二进制形 式)表

8、示。假设用X原表示X的原码,则原+1原 =00000001+127原 =01111111-1原 =10000001-127原 =11111111对于 0 的原码表示, +0和一0 的表示形式不同,也就是说, 0 的原码表示不惟一。+0原 =00000000-0原 =10000000由此可以看出, 8 位原码表示的最大值是 127,最小值是一 127,表示数的范围为一 127127。例如:0|1|0|1|1|1|0|1J L符号位表示二进制数+1011101,即十进制数93;11011101符号位表示二进制数一 1011101,即十进制数一 93。 反码表示数值型数据的反码表示规则是:如果一个数

9、值为正,则它的反码与原码相同;如果一 个数值为负,则符号位为1,其余各位是对数值位取反。假设用X表示X的反码,则反+1反 =00000001+127反 =01111111-1反 =11111110-127反 =1000000对于0的反码表示, +0和一0的表示形式同样不同,也就是说, 0的反码表示不惟一。+0反 =00000000-0 反 =11111111用 8 位反码表示的最大值为 127,其反码为 01111111;最小值为一 127 ,其反码为 10000000。用反码表示数值型数据,现已不多用。 补码表示 原码和反码都不便于计算机内的运算,因为在运算中要单独处理其符号。例如,对以 原

10、码表示的+7和一9相加,必须先判断各自的符号位,然后对后 7位进行相应的处理,很 不方便。因此,最好能做到将符号位和其他位统一处理,对减法也按加法来处理,这就是 补码 。补码的原理可以用时钟来说明。例如,要将时针从9点拨到4点,可以向前拨,也可以 向后拨,其表示如下:95=4(向后拨5 个字) 9+7=16(向前拨7 个字)可见,向后拨 5 个字能指向 4,向前拨7 个字也能指向 4。时钟是十二进制的,可以把 12 点看成 0 点,12 点的下一个时针指向是 1 点,13 点就是 1 点,其实是进位后得到了十二 进制数11,其中第一个1是进位,即高位,第二个 1是低位。高位不保留,只保留低位,

11、 因此 16 点用十二进制数表示为 4,高位不保留,在时钟上就是 4 点,用十进制数可表示 为:1612=4。上例中,用减法和加法都能得到 4,其中 12 被称为模,5和 7 被称为模12 下互补,即 5 的补数是 7 , 7 的补数是 5 。这个例子可以推广到其他进制,如十进制、二进制等。在计算机中,以一个有限长度 的二进制作为数的模,如果用1个字节表示1个数,1个字节为8位,因为逢28就进1,所 以模为 28。对于补码是这样规定的:正数的原码、反码、补码都是相同的;负数的最高位为 1, 其余各位为数值位的绝对值取反,然后对整个数加1。假设用X补表示X补码,则+1补 =00000001+12

12、7补=01111111-1补=11111111-127补=1000001在补码表示中, 0的补码表示是惟一的。+0补= -0补 = 00000000因此在补码表示中,多出来一个编码 10000000,把10000000的最高位 1 既看做符号 位,又作为数值位,其值为一 128,这样补码表示的数值范围可扩展一个,负数最小值为 一 128,而不是一 127。用 8 位补码表示的数值数据其最大值为 127,最小值为一 128,表示数的范围为一 128127。计算机一般是以补码形式存放数值数据的。例如:求一 51的补码。一 51为负数,所以符号位为1,绝对值部分是原码的每一位取 反后再在末位加 1。

13、-51原 =10110011其绝对值部分的每一位取反后,得 11001100 再在取反后的数值末位加 1,得11001101用补码进行运算,减法可以用加法来实现。例如+76应得1,可以将+7 的补码和一6 的补码相加,就得到结果值的补码。+7 的补码: 0 00 00111-6 的补码:+111110 101 0 00 00001t进位进位被舍去,进位右边的 8 位 00000001 就是 l 的补码。(3)各种整数表示法的比较和表示范围 各种编码方法的表数范围:有符号数n+1位二进制编码x表示的整数范围:原码、反码:-2nVxV 2n补码:-2nWxV加无符号数n位二进制编码X表示的整数范围

14、:0WXV2n-1假设用 8 位二进制代码表示无符号整数和有符号整数,则 8 位二进制代码所能表示的 256个不同的值在各种整数表示法中表示的数值见表 25。表2-5三种整数的比较8位二进制代码无符号整数原码补码0000 00000000000 00011110000 00102220000 00113330111 11101261261260111 11111271271271000 000012801281000 000112911271000 001013021261000 001113131251111 111025412621111 11112551271整数表示的数其范围是有限的,

15、根据计算机的字长,整数可以用8位、16位、32位等表示。当整数分别用无符号整数、原码、反码、补码表示时,表示数的范围见表 26。表 2-6不同位数和不同表示法下数的表示范围二进制位数无符号数的表示范围补码的表示范围原码、反码的表示范围80 (28-1)-27(27-1)-27(27-1)160 (216-1)-215(215-1)-(215-1) 215-1320 (232-1 )-231(231-1)-(231-1)231-1各种编码之间的相互转换:x原x补:心0, x补=x原 ;xVO,符号位不变,数值位取反+1。例 1: X1原=01111111=7FH X1补=01111111=7FH

16、 X2原=11111111=FFH X2补=10000001=81H例2: X1原=59H,池原=。9臥 求真值?X1=+1011001B=+89X2=-1011001B=-89例 3: X1补=59H, X2Wb=D9H,求真值?X1=+1011001B=+89X2=-0100111B=-39(4)BCD 码 当在计算机内表示十进制整数时,除了前面介绍的先转换成二进制数,再选用原码、 反码或补码表示外,还有一种表示方法也经常使用,这种编码方法称为 二进制编码的十进 制整数(Binary Coded Decimal,简称BCD码),它把1位十进制数用4位二进制编码表示, 符号位仍然是正数为0”

17、,负数为1”。这种编码方法可形成多种形式的编码,最常用的是 8421 BCD 码。在8421 BCD码中4个二进制位自左至右每位的权分别是23,22,21,20,即8,4, 2,1,所以称为8421 BCD码,也简称为8421码。表27列出BCD码与十进制数、二进 制数的比较。表 2-7BCD 码与是十进制数、二进制数的比较十进制数二进制数8421 BCD 码0000000001000100012001000103001100114010001005010101016011001107011101118100010009100110011010100001 00001110110001 000

18、11211000001 00101311010001 00111411100001 01001511110001 0101例如,十进制数一 51的BCD码为(-51)BCD=10101 0001十进制数32767的BCD码为(32767山0 = 0 00H 0010 0111 OHO 01112.1.4.2 实数(浮点数)表示在一定的字长下,整数表示的数值范围是有限的,这在许多应用特别是科学计算中是 不够用的。因此,为了能在计算机中表示既有整数部分又有小数部分的数和一些绝对值特 别大的数或特别小的数,引入浮点表示方法来表示实数。在浮点表示方法中,任何一个数可表示成:N = M RE其中,M被称

19、为该数的尾数,E被称为该数的阶码,而R则是阶码的基数。在许多计算机高级语言中,数值型常量都可以写成浮点数的形式。例如:4.32E-2 表示 4.32x10-2 = 0.0432这里 4.32 是尾数,一2 是阶码,而基数为 10。又如: 0.432E-1 表示0.432x10-1=0.04324.32E+l 表示4.32x10+1=43.2从上面例子中可以看出浮点数表示方法的特点:一是同一数值可以有不同的浮点表示 形式,如0.0432可表示成4.32E-2或者0.432E-1。二是在相同尾数情况下,阶码的大小可用 来调节所代表数值中小数点的实际位置,如4.32E-2和4.32E+1。这里还要说

20、明一点,基数是隐含约定的,如上例中R=10,并未在其浮点表示形式中明 显地出现。在计算机内部表示的浮点形式的实数,不论其尾数部分还是阶码部分都是二进制数, 且尾数部分是二进制定点纯小数,而阶码部分则为二进制定点整数;基数通常隐含为 2, 即R=2。在浮点数表示中,数符和阶符都各占一位,阶码的位数表示数的大小范围,尾数 的位数表示数的精度。例如,若某机器字长为16位,规定前6位表示阶码(包括阶符),而后10位表示尾数(包 括尾符,也就是整个数的符号),则 16 位的分布如下:阶符阶码数符尾数1 26 7 816例如: 16 位浮点数00010111101010001i-4i.I阶符阶码数符尾数表示的数是:(0.110101)2x2(101)2=( 11010.1)2 = (26.5)10

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!