logo资料库

2的补码记数法(介绍2的补码定义、原理以及计算方法).doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
下面介绍 2 的补码记数法 图 1 显示了两个完整的 2 的补码系统:一个是基于长度为 3 的位模式, 另一个是基于长度为 4 的位模式。 这种系统的构造方法是:从相应长度的 0 的串(例子中用 3 位和 4 位)开始, 用二进制记数的方式一直记数到位模式是由一个 0 后面跟随尽可达到的数目 1 组成(列中是 011 和 0111)为止。 这些位模式表示值 0,1,3,…。表示负数的位模式是通过从相应长度的 1 的串开始,然后用 二进制倒记数的方式记数, 一直到位模式是由一个 1 和随后尽可能达到的数目 0 所组成为止。 这些位模式表示值-1,-2,-3,…。 如果这种倒记数的方法使用时太困难,也可以从表最底部的位模式开始, 向上记数。即从由一个 1 和随后尽可能达到的个数 0 组成的位模式开始一直到全 由 1 组成的位模式为止。 图一 注意:在 2 的补码系统中,一个位模式最左边的位指示被表示数值的符号。因此,最左边的位 被称为符号位。 负值是用符号位为 1 的位模式来表示,非负值是由符号位为 0 的位模式来表示。 在 2 的补码系统中,表示相同幅度的正负值的模式之间存在着简便的关系。从右至左读位模 式,直到包括第一个 1 时, 它们是等同的。继续读位模式,则相互之间就互补了(一个模式的补是由模式中的所有的 0 变 为 1、所有的 1 变为 0 而得到, 0110 和 1001 是互补的)。例如,图 1 的 4 位长模式中表示 2 和-2 的模式都是以 10 结束, 但是表示 2 的模式是以 00 开始,
而表示-2 的模式以 11 开始。这个观察引出了表示相同幅度的正值和负值的位模式之间进行相 互转换的一个算法, 即对原位模式从右向左逐位拷贝直到有一个 1 被拷贝为止,然后对原位模式中余下来的部分求 补,把求补结果做拷贝,如图 2 所示。 图 2 在熟悉了 2 的补码系统的这些特性基础上便可引出对 2 的补码表示形式解码的算法。如果待解 码的位模式有为 0 的符号位, 该位模式就好像是二进制表示形式,只需直接读出它的值。例如,0110 表示值 6,因为 0110 是 6 的二进制表示形式。 如果待解码的位模式符号位为 1,则表示是个负值,并且所有余下的部分表示数值的大小。其做 法是:从右向左拷贝原位模式, 直到有一个 1 被拷贝为止,然后对原位模式中余下来的部分求补,最后把所得到的模式当做是 二进制表示形式进行解码。 例如,解码模式 1010,因为符号位为 1,则表示的是个负值。因此,将这个模式转换为 0110, 此模式代表 6,从而得出原来的模式表示-6。 (2) 2 的补码记数法中的加法 要加由 2 的补码记数法表示的数值,除了所有的位模式包括答案在内,都运用了与二进制加法 相同的算法。 这就意味着在 2 的补码系统中进行加法时,最后的进位在答案的左端产生的附加位一定要舍去。 于是,加 0101 和 0010 得 0111; 加 0111 和 1011 结果是 0010(0111+1011=10010,舍去最左边的 1,结果为 0010,长 度保持 4 位)。根据这种理解, 考察图 3 中的三个加法问题。在每一种情况中,已经把问题转换成 2 的补码记数法(使用 4 位 长的位模式),执行前面描述的加法过程, 并且将结果解码返回到常用的基数 10 的记数法。
贴图 3 采用 2 的补码记数法的机器需要知道的只是如何去加和求反就够了。例如,减法问题 7-5 与加 法问题 7+(-5)是相同的。 因此,如果机器被请求从 7(存储为 0111)中减 5(存储为 0101),它首先将 5 改变为-5(表 示为 1011), 然后执行 0111+1011 的加法过程取得 0010,它表示 2。 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=672444
分享到:
收藏