资源描述:
《c语言程序设计谭浩强机器码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数的机器码表示在计算机屮对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算操作呢?为了妥善的处理好这些问题,就产生了把符号位和数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、移码等。为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为真值,后者称为机器数或机器码。1.原码表示法若定点小数的原码形式为X2…xn,则原码表示的定义是r*1>灼0[xh={11一无=1+
2、无ONx>—(2.7)式中[*]原是机器数,x是真值例如,x=+0.1001,则[x]原=0.1001x=-0
3、.1001,则[x]原=1.1001对于0,原码机器中往往有“+o”、分,故有两种形式:[+0]腹=0・000...0[-0]原=1.000...0若定点整数的原码形式为X0XIX2…xn,则原码表示的定义是rx2">xNO[*]原=S(2.8)5—x=2“+x0^x>-2n采用原码表示法简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加吋,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号。为了解决这些孑盾,人们找到了补码表示法。2.
4、补码表示法我们先以钟表对时为例说明补码的概念。假设现在的标准时间为4点正;而有一只表已经7点了,为了校准时间,可以采用两种方法:一是将吋针退7-4=3格;一是将时针向前拨12-3=9格。这两种方法都能对准到4点,由此可以看出,减3和加9是等价的,就是说9是(-3)对12的补码,可以用数学公式表示-3=+9(modl2)mod12的意思就是12模数,这个“模”表示被丢掉的数值。上式在数学上称为同余式。上例中其所以7-3和7+9(mod12)等价,原因就是表指针超过12时,将12自动丢掉,最后得到16-12二4。从这里可以
5、得到一个启示,就是负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便。若定点小数补码形式为xo.xiX2…%n,则补码表示的定义是rx1>心0(2.9)[幻补={(mod2)I2+x=2—x02x2—1例如,^=+0.1011,则[幻补=0.1011x=-0.1011,贝ij[x]补=10+x=10.0000-0.1011=1.0101对于0,[+0]补=[—0]补=0.0000(mod2)注意,0的补码表示只有一种形式。采用补码表示法进行减法运算就比原码方便得多了。因为不论数是止还是负,机器总
6、是做加法,减法运算可变为加法运算。但根据补码定义,求负数的补码要从2减去
7、x
8、。为了用加法代替减法,结果还得在求补码时作一次减法,这显然是不方便的。下面介绍的反码表示法可以解决负数的求补问题。对定点整数,补码表示的定义是(2.10)所谓反码,就是二进制的各位数码0变为1,1变为0。也就是说,若Xi二1,则反码为xi=o;若xi二0,则反码xi二1。数值上面的一横表示反码的意思。在计算机中用触发器寄存数码,若触发器Q端输出表示原码,则其Q端输出就是反码。由此可知,反码是容易得到的。对定点小数,反码表示的定义为rx1>心0
9、[幻反=Y1(2-2n)+x0$x>—(2.11)其屮n代表数的位数。在一些文献屮,这种以2为基数的反码又称为1的补码。一般情况下,对于正数x=+0.XIX2・・・xn,贝[x]反=0.XX2Xn对于负数X=—O.X1X2…xn,则有[x]反=1・XIX2・・・Xn对于0,有[+0]反和[―0]反之分:[+0]反=0.00...0[―0]反=1.11...1我们比较反码与补码的公式[幻反=(2—2"n)+x[幻补=2+x可得到(2.12)[*]补=[x]反+2一“这就是通过反码求补码的重耍公式。这个公式告诉我们,若
10、要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2切上加1。rx2">[幻反=<1(2“t—1)+x0^x>-2n4.移码表示法对定点整数,反码表示的定义为(2.13)移码通常用于表示浮点数的阶码。由于阶码是个n位的整数,所以假定定点整数移码形式为xoxi肌…xn吋,对定点整数,移码的定义是[幻移=2"+/2n>x>—2n(2.14)若阶码数值部分为5位,以x表示真值,则[x]移=2'+x25例如,当正数x=+10101时,[x]移=1,10101;当负数^=-10101时,[幻移=2'+x
11、=2^—10101=0,OlOllo移码屮的逗号不是小数点,而是表示左边一位是符号位。显然,移码中符号位xo表示的规律与原码、补码、反码相反。小结:上面的数据四种机器表示法中,移码表示法主要用于表示浮点数的阶码。由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。在这类机器中,数用补码表示,补码存储,补码运算。也有