数值型数据的表示及处理.docx
《数值型数据的表示及处理.docx》由会员分享,可在线阅读,更多相关《数值型数据的表示及处理.docx(11页珍藏版)》请在三一办公上搜索。
1、数值型数据的表示及处理原码、反码、补码 数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚.为了能方便的与二进制转换,就使用了十六进制和八进制.下面进入正题. 数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为 (-127-0 +0127)共256个. 有
2、了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设字长为8bits ,( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 =(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 显然不正确。因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应. 下面是反码的减法运算: ( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -
3、1 ) 10= (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有问题. ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = (00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正确。问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大). 于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0
4、),所以补码的表示范围为: (-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(2一1),16位的正整数的表示范围是065535(2一1),32位的正整数的表示范围是02一1。 (2)有符号整数 有符号整数使用一个二进制位作为符号位,一般符号位都放在所有数位的最左面一位(最高位),0代表正号+(正数),1代表负号一(负数),其余各位用来表示数值的大32816小。可以采用不同的方法表示有符号整数,一般有原码、反码和补码。为简化起见,以下假设只用一个字节来表示一个整数。 带符号数表
7、示法与运算 带符号数的表示主要有真值、原码、反码、补码4种表示形式。 真值:是某个带符号数的真实值,通常是用十进制表示,+/号表示符号。 原码:将真值前面的正号用代码0表示且放在数值位前面,并且数值部分用二进制表示。 反码:将原码的符号位不变,数值位按位取反。 补码:在反码的末位加1。 在现代计算机中,算术运算都是以补码为基础,操作数是补码的形式表示,运算结果也是以补码形式表示或存储。 原码表示 数值型数据的原码表示是将最高位作符号位,其余各位用数值本身的绝对值(二进制形式)表示。假设用X原表示X的原码,则 +1原 =00000001 +127原 =01111111 -1原 =10000001
8、 -127原 =11111111 对于0的原码表示,+0和一0的表示形式不同,也就是说,0的原码表示不惟一。 +0原 =00000000 -0原 =10000000 由此可以看出,8位原码表示的最大值是127,最小值是一127,表示数的范围为一127127。 例如: 0 1 0 1 1 符号位 表示二进制数+1011101,即十进制数93; 1 1 0 1 1 1 0 1 1 0 1 符号位 表示二进制数一1011101,即十进制数一93。 反码表示 数值型数据的反码表示规则是:如果一个数值为正,则它的反码与原码相同;如果一个数值为负,则符号位为1,其余各位是对数值位取反。假设用X反表示X的反
9、码,则 +1反 =00000001 +127反 =01111111 -1反 =11111110 -127反 =1000000 对于0的反码表示,+0和一0的表示形式同样不同,也就是说,0的反码表示不惟一。 +0反 =00000000 -0反 =11111111 用8位反码表示的最大值为127,其反码为01111111;最小值为一127,其反码为10000000。用反码表示数值型数据,现已不多用。 补码表示 原码和反码都不便于计算机内的运算,因为在运算中要单独处理其符号。例如,对以原码表示的+7和一9相加,必须先判断各自的符号位,然后对后7位进行相应的处理,很不方便。因此,最好能做到将符号位和其
10、他位统一处理,对减法也按加法来处理,这就是补码。 补码的原理可以用时钟来说明。例如,要将时针从9点拨到4点,可以向前拨,也可以向后拨,其表示如下: 95=4(向后拨5个字) 9+7=16(向前拨7个字) 可见,向后拨5个字能指向4,向前拨7个字也能指向4。时钟是十二进制的,可以把12点看成0点,12点的下一个时针指向是1点,13点就是1点,其实是进位后得到了十二进制数11,其中第一个1是进位,即高位,第二个1是低位。高位不保留,只保留低位,因此16点用十二进制数表示为4,高位不保留,在时钟上就是4点,用十进制数可表示为:16124。 上例中,用减法和加法都能得到4,其中12被称为模,5和7被称
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 数据 表示 处理
链接地址:https://www.31ppt.com/p-3558791.html