计算机如何执行指令和运算数据(计算机数据表示及运算方法)
用定点小数引出数值的三种编码(原码、补码和反码)方案是最方便的。
(1) 原码表示法
原码表示法是用机器数的最高一位代表符号,其余各位给出数值绝对值的表示方法。其定义为:
例如, X= 0.1011, [X]原=01011
X=-0.1011, [X]原=11011
按定义,当X=-0.1011时,[X]原= 1-X= 1.0000-(-0.1011) =11011,约定小数点在符号位和数值位之间,可省略,这里的X为数的真值,[X]原为原码表示的机器数,是符号位 |X|。
在原码表示中,零有两种表示形式,即 [ 0.0]原=00000, [-0.0]原=10000。
原码表示的优点在于实现乘除运算的规则简单,缺点是实现加减运算很不方便,要比较参与加减运算两个数的符号和两个数的绝对值的大小,才能确定运算结果的数值和符号。
(2) 反码表示法
反码表示法是用机器数的最高一位代表符号,数值位是对负数值各位取反的表示方法,其定义为
例如, X= 0.1011, [X]反=01011, X=-0.1011, [X]反=10100
在反码表示中,零有两个编码,即 [ 0.0]反=00000 , [-0.0]反=11111
在当前的计算机系统中很少使用反码,在有些书中也称反码为按1取模的编码。
(3) 补码表示法
补码表示法是用机器数的最高一位代表符号,以下各位给出数值按2取模结果的表示方法,其定义为:
例如, X= 0.1011, [X]补=01011, X=-0.1011, [X]补=10101
在补码表示中,0有唯一的编码,即 [ 0.0]补=X =00000, [-0.0]补=2 X MOD 2 = 00000,所以定点小数多出一个编码,可表示-1。例如,X1=X2=-0.1000,则[X1]补=[X2]补 =11000, 那么[X X]补=11000 11000=110000,按2取模后得10000,这是-1的补码表示。
补码表示的机器数和它的真值的关系,是 [X]补 = 2*符号位 X,由此又得到 X=[X]补 - 2*符号位,这个结论在讨论补码乘法是会用到。
补码表示非常适合于进行加减法运算,对符号位与数值位同等处理,只要结果不超出机器能表示的数值范围,将直接得到正确的运算结果,即符号位与数值位都是正确的补码表示,并且可以用实现加法运算的电路完成减法运算,用 [-Y]补 的办法处理减数即可
整数的编码带符号的整数也可以用原码、补码和反码三种不同的编码方法表示。
可以认为整数是小数点被设置在最低一位数值位的右边,机器数的最高位仍被用作数的符号位。数值的表示范围,以及整数编码的取模值,都与表示一个数所用的二进制位数有关。
例如,对于用n 1个二进制位表示的带符号的整数的补码,其数值范围是-2n≤X <2n,是用机器数的最高一位代表符号,以下各位给出数值按2n 1取模结果的表示方法,其定义为:
正数的原码和反码的定义、表示与定点小数部分说明的方法类似,这里从略。
例如, X= 10101 [X]原 =[X]补 =[X]反 =010101
X=-10101 [X]原 =110101,[X]补 =101011,[X]反 =101010
以上两个数的变形补码分别为0010101和1101011。这里的n均为5。
二进制十进制数编码有些计算机内有专门的十进制运算指令,支持选用十进制数的算术计算。为此要求采用一种二进制编码的十进制数来表示数据,这种编码被称为BCD码(Binary Coded Decimal),使用4位二进制编码来表示十进制数字0~9,有多种具体实现方案,如表2.3所示。
按照编码的每一位是否都有固定的权值,表中的编码可分为有权码和无权码两类。显然,8421码、2421码和5211码为有权码;而格雷码、余3码的每一位没有确定的权,所以是无权码。
格雷码又称循环码,其编码规则是使任何两个相邻的代码只有一个二进位的状态不同,在D/A或A/D转换电路中得到很好的运行结果。
用BCD码来表示十进制数字时,1个字节存放2位十进制的数字;符号位放在最低位数字位之后,一般用C(12)表示正号,用D(13)表示负号。例如:+258被表示成258CH,占用两个字节,-34被表示为034DH,也占用两个字节,此处的H指出用的是十六进制数。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com