精华内容
下载资源
问答
  • 补码一位乘和补码二位乘

    千次阅读 2020-03-17 18:16:24
    补码一位乘 回顾原码的一位乘:原码一位乘是数值位之间的计算,计算之前需要对被乘数取绝对值,符号位单独处理;而补码乘法的符号位是计算过程中产生的,因此不需要对被乘数取绝对值。 补码的一位乘只讲比较法...

    补码一位乘
    回顾原码的一位乘:原码一位乘是数值位之间的计算,计算之前需要对被乘数取绝对值,符号位单独处理;而补码乘法的符号位是计算过程中产生的,因此不需要对被乘数取绝对值。

    • 补码的一位乘只讲比较法(Booth法)
      原理:
    1. 被乘数和部分积均取2位符号位,因此乘数和被乘数均要在最高位扩位。补码扩位原则:正数补0,负数补1.
    2. 乘数取一位附加位,作为乘数的最后一位,在移动时作为最低位处理,初始化值为0。
    3. 每次都对乘数末两位(包括附加位)判断,数值为00和11时进行右移1位操作,数值为01时部分积+[被乘数]补后进行移位,数值为10时部分积-[被乘数]补后进行移位。
    4. 移位次数与乘数数值位的位数有关,但最后一次移位完成后还需要进行步骤3,但不移位。

    注意事项:
    高位补位时,负数高位补1,正数高位补0。
    符号位也参与运算
    移位原则采取补码算数移位(正数补零,负数右移补1,左移补0)

    例题:
    [x]补=1.0101,[y]补=1.0011,求[x*y]补。
    解:
    ① 初始化部分积为00.0000,y补位后为10011, 附加位C=0,[-x]补=00.1011
    ② 判断数10,进行部分积-[x]补,即00.0000+00.1011=00.1011,乘数移一位,高位补部分积的最低位,乘数原来的最低位往附加位移,第一次移位后:乘数 11001,C=1,部分积00.0101
    ③ 判断数11,直接进行移位。第二次移位后:乘数11100,C=1,部分积00.0010
    ④ 判断数01,进行部分积+[x]补。即00.0010+11.0101=11.0111,第三次移位后,乘数11110,C=0, 部分积11.1011。
    ⑤ 判断数00,直接进行移位。第四次移位(乘数的尾数位数次)后,乘数11111,C=0,部分积11.1101。
    ⑥ 判断数10,进行部分积-[x]补,即11.1101+00.1011=00.1000,此时不再进行移位了。
    ⑦ 形成结果,从部分积开始取小数点后8位,即00.10001111。

    补码二位乘
    补码二位乘与原码二位乘相似,部分积和被乘数采用三位符号位,补码的二位乘中乘数采用两位符号位,在末尾再加一位附加位。

    原理:

    1. 部分积和被乘数采用3位符号位,高位扩位。乘数高位用两位符号位+尾数,末尾加一位附加位,初始值为0
    2. 对乘数的末三位判断,情况如下:
      000:直接移两位
      001:部分积+被乘数的补码后移动两位
      010:部分积+被乘数的补码后移动两位
      011:部分积+2被乘数的补码(也就是被乘数左移一位的结果)后移动两位
      100:部分积-2
      被乘数的补码(也就是被乘数左移一位的结果)后移动两位
      101:部分积-被乘数的补码后移动两位
      110:部分积-被乘数的补码后移动两位
      111:直接移两位
    3. 乘数的尾数分奇数偶数两种情况:偶数时采取两位符号位,奇数时采取一位符号位。偶数情况下:移位次数为尾数位数/2,最后一步仍然要对末三位判断,但是不移位;奇数情况下移位次数为尾数位数/2+1次,最后一步也要对末三位判断,然后移动一位(注意)。

    直接上题
    [x]补=0.0101,[y]补=1.0101,求[xy]补
    解:① 规格化被乘数和部分积,取三位符号位,[x]补=000.0101,最好算一下2
    [x]补=000.1010,部分积000.0000;乘数尾数位位数为偶数,取两位符号位,附加末尾位取0,得1101010
    ② 判断值为010,进行部分积+[x]补,000.0000+000.0101=000.0101,第一次移位后:乘数0111010,部分积000.0001
    ③ 判断值为010,进行部分积+[x]补,000.0001+000.0101=000.0110,第二次移位后,乘数1001110,
    部分积000.0001
    ④ 最后一次判断但是不移位,判断值为110,此时进行部分积-[x]补,000.0001+111.1011=111.1100
    开始取结果,从部分积开始取,连着最终乘数直到小数位达到被乘数的尾数位+乘数尾数位,即111.11001001,完。

    说明:
    博主计算原码乘和补码乘喜欢二位乘,因为移位次数少,不容易出错,但是需要背住那个很恶心的表格,大家在这方面可以做取舍。 此外,初学者学到这里可能失去信心了,这里博主要跟大家说:这方面的知识不是计组的重点,期末考和考研也就出个2-3分,在复习的时候一定要抓住重点,计组的重点是在存储器以及微程序控制这方面,大家可以适当取舍,但,,,,学得越多,快乐越多对吧,博主选择全都掌握,奥里给,干了兄弟们。

    展开全文
  • 学习笔记 一、原码一位乘·: 运算法则:若Yi=1,+X;... 二、补码一位乘(符号位参与运算) 校正法 若Y>0,计算方法与原码一位乘类似; 若Y<0,结果 +[-x]补 校正(校正无需移位) ...

    学习笔记

          一、原码一位乘·:

             运算法则:若Yi=1,+X; 若Yi=0,+0.(n次加法,n次移位)

     

           二、补码一位乘(符号位参与运算)

                          校正法

                                   若Y>0,计算方法与原码一位乘类似;

                                   若Y<0,结果 +[-x]补 校正 (校正无需移位)

                  比较法

                               采用双符号位,符号位参与运算

                                乘数Y末位增设Yn+1=0,根据Yn,Yn+1判断,进行n+1步加法,最后一步不移位。

                                Yn+1 -Yn=0,+0

                                Yn+1 -Yn=-1,+[-X]补

                                Yn+1 -Yn=1,  +[X]补

    三、补码两位乘

       将补码一位乘法(比较法)两步合成一步得补码两位乘法法则

    增设Yn+1=0

    符号位参与运算,部分积与被乘数采用三符号位;乘数Y数值的位数为偶数设两个符号位;为奇数设一个符号位。

    根据Yn-1 , Yn ,Yn+1判断

    Yn-1     Yn     Yn+1        组合

       0         0          0             0             部分积+0,右移两位

       0         0          1             1             部分积+[X]补,右移两位

       0         1          0             1             部分积+[X]补,右移两位

       0         1          1             2             部分积+2[X]补,右移两位

       1         0          0            -2             部分积+2[-X]补,右移两位

       1         0          1            -1             部分积+[-X]补,右移两位

       1         1          0            -1             部分积+[-X]补,右移两位

       1         1          1             0             部分积+0,右移两位

     

    展开全文
  • 计算机组成原理课程设计内容,跟着老师的讲解,自己一步步做的。 (1)Logisim仿真乘法器,原码一位乘。 (2)Logisim仿真乘法器,补码一位乘
  • 原码一位乘和补码一位乘

    千次阅读 2015-10-14 22:11:55
    今天学习了计算机中乘法的运算:原码一位乘和补码一位乘,在这做个笔记,顺便检验一下学习成果,有不足的地方希望大家不吝指教! 1.原码一位乘 首先注意,在乘法运算中,同号为正,异号为负。在这里我们用异或符号...
        今天学习了计算机中乘法的运算:原码一位乘和补码一位乘,在这做个笔记,顺便检验一下学习成果,有不足的地方希望大家不吝指教!

    1.原码一位乘

    首先注意,在乘法运算中,同号为正,异号为负。在这里我们用异或符号表达符号位:

    被乘数 [x] = x.xxx xn        

    乘数   [y] = yf .yyy yn

    两者乘积   ] = ( xfy) . (0. xxxxn)(0 . yyyn)

    原码一位乘和我们认识中的乘法运算一样,只不过在计算机内部采用移位的方法。
    例如, x  = 0.1101, y = 0.1011,演示过程:

     

     

    部分积

     

       

     

       

    乘数

    说明

     

     

     

    00.0000

       

     

       

    yf

    1

    0

    1

    1

     

    z0 = 0

     

    +

     

    00.1101

       

     

       

     

     

     

     

     

     

    y4 = 1,+ x

     

     

     

    00.1101

       

     

       

     

     

     

     

     

     

     

     

     

    00.0110

       

     

       

    1

    yf

    1

    0

    1

     

    右移,得z1

     

    +

     

    00.1101

       

     

       

     

     

     

     

     

     

    Y3 = 1,+ x

     

     

     

    01.0011

       

     

       

     

     

     

     

     

     

     

     

     

    00.1001

       

     

       

    1

    1

    yf

    1

    0

     

    右移,得z2

     

    +

     

    00.0000

       

     

       

     

     

     

     

     

     

    Y2 = 0,+0

     

     

     

    00.1001

       

     

       

     

     

     

     

     

     

     

     

     

    00.0100

       

     

       

    1

    1

    1

    yf

    1

     

    右移,得z3

     

    +

     

    00.1101

       

     

       

     

     

     

     

     

     

    Y1 = 1,+ x

     

     

     

    01.0001

       

     

       

     

     

     

     

     

     

     

     

     

    00.1000

       

     

       

    1

    1

    1

    1

    yf

     

    右移,得z3 = xy


        所以      x · y  = 0.10001111

    2.补码一位乘

    实现这种补码乘法规则时,在乘数最末位后面要增加一位补充位 yn+1 (0)。开始时,由 ynyn+1 判断第一步该怎么操作;然后再由 yn - 1 yn 判断第二步该怎么操作。因为每做一步要右移一位,故做完第一步后, yn - 1 yn 正好移到原来 ynyn+1 的位置上。依此类推,每步都要用 ynyn+ 1 位置进行判断,我们将这两位称为判断位。

    判断位遵从以下乘法运算规则:

    (1) 如果 yn = yn+1,部分积 [ z] 加0,再右移一位;

    (2) 如果 yn yn+1 = 01,部分积加[ x ],再右移一位;

    (3) 如果 yn yn+1 = 10,部分积加[ -x ],再右移一位;

    这样重复进行 n+1 步,但最后一步不移位,包括一位符号位。

    由运算规则可知,我们要求出

    被乘数x的[ x ]补,[ -x ],根据乘数ynyn+1

    求出部分积
    例如, x  = 0.1101, y = 0.1011,演示过程:
    [-x]补=1.0011 ,
    [y]补=0.1011

     

    部分积

     

     

             

    乘数

    说明

     

     

     

    00.0000

     

             

    0.

    1

    0

    1

    1

    0

    yn+1  =  0

     

    +

     

    11.0011

     

             

     

     

     

     

     

     

    ynyn+1 = 10,加[-x]

     

     

     

    11.0011

     

             

     

     

     

     

     

     

     

     

     

    11.1001

     

             

    1

    0

    1

    0

    1

    1

    右移一位

     

    +

     

    00.0000

     

             

     

     

     

     

     

     

    ynyn+1 = 10,加0

     

     

     

    11.1001

     

             

     

     

     

     

     

     

     

     

     

    11.1100

     

             

    1

    1

    0

    1

    0

    1

    右移一位

     

    +

     

    00.1101

     

             

     

     

     

     

     

     

    ynyn+1 = 01,加[x]

     

     

     

    00.1001

     

             

     

     

     

     

     

     

     

     

     

    00.0100

     

             

    1

    1

    1

    0f

    1

    0

    右移一位

     

    +

     

    11.0011

     

             

     

     

     

     

     

     

    ynyn+1 = 01,加[-x]

     

     

     

    11.0111

     

             

     

     

     

     

     

     

     

     

     

    11.1011

     

             

    1

    1

    1

    1

    0

    1

    右移一位

     

    +

     

    00.1101

     

             

     

     

     

     

     

     

    ynyn+1 = 01,加[x]

     

     

     

    00.1000

     

             

    1

    1

    1

    1

    0

    1

    最后一步不移位

          所以       [x · y]  = 0.10001111



    展开全文
  • 本课设采用COP2000实验仪软件和计算机实现补码一位乘的功能,利用伟福COP2000的指令集编程实现。
  • 计算机组成原理:定点原码、补码一位乘 移位操作对于任何计算机来说都是不可缺少的操作,各种计算机指令系统中都含有移位指令。 这里首先给大家介绍一下移位操作中的算术移位(原码右移、补码右移) 算术原码右移:...

    计算机组成原理:定点原码、补码一位乘

    移位操作对于任何计算机来说都是不可缺少的操作,各种计算机指令系统中都含有移位指令。
    这里首先给大家介绍一下移位操作中的算术移位(原码右移、补码右移)
    算术原码右移:符号位不变,各位右移,最高有效位补0,末位移出。
    列如:1.1001 右移 1.0100 ; 0.1101 右移 0.0110
    算术补码右移:符号位不变,同时移至最高有效为,各位右移,最低位移出。
    列如:11.01 右移 11.11 ; 00.1011 右移 00.0101

    定点原码一位乘 x*y算法:

    1. 位数 n=max(x,y)

    2. 一律用变形码

    3. 加和右移移位完成,符号位不参与运算

    4. 开始部分积00.000…0(n个0)

    5. yn = 0 : +0
      yn = 1 :+x

    6. 右移一位,判断新的yn ,一次重复做n次,得2n位积

    7. 用异或配积的符号位:Ux=Xf ⊕Yf

    变形码指的是:符号位采用两位。
    列如 1.001 变形码为 11.001
    在这里插入图片描述
    移位操作是将部分积的最后一位移动到 y中

    原码乘法中的符号位本参加运算,需要单独用以个异或门产生乘积的符号位。故人们自然地思考能否让符号数字化后产假乘法运算,补码乘法就可以实现符号位直接参加运算

    定点补码一位乘算法(Booth算法):

    1. 准备[x],[-x],[y];增加乘数y的“补充位”Yn+1=0
    2. 位数 n = max(x,y)
    3. 开始部分积:00.0…0(n个0)
    4. 判断 ynyn+1
      ynyn+1={00:+011:+001:+[x]10+[x] y_ny_{n+1}=\left\{ \begin{array}{rcl} 00 & & :+0\\ 11 & & :+0\\ 01 & &:+[x]_补\\ 10 & & +[-x]_补 \end{array} \right.
    5. 右移一位
    6. 对4,5步重复n+1次,最后一次只加不移位,2n位的结果是补码如果需要原码,结果还得补一次。

    在这里插入图片描述

    总结

    如果大家有啥不懂的地方,可以在下方评论留言,我看到之后会解答。之后我会更新定点除法运算和浮点算术运算。欢迎大家批评指正!!!

    展开全文
  • 补码一位乘: 学习传送门:补码一位乘 主要思想: 原码/补码一位乘 异同: 原码一位乘法 补码一位乘法 进行n轮加法、移位 进行n轮加法、移位,最后多一次加法 根据乘数Y的最低位确定加什么 根据乘数Y的...
  • 1、原码一位乘: 2、补码一位乘补码一位乘的符号位参与计算,在最后自然生成。并且被乘数与部分积是双符号位(n+2);乘数的符号也参与运算(n+1).
  • booth算法(补码一位乘) python实现

    千次阅读 2018-10-26 19:58:27
    补码一位乘 可能表达不是特别清楚 主要还是看代码吧!(多多指教 谢谢1) 其实就是计算机中的乘法实现:在计算机中 数字是用补码表示的 ,想对于计算机计算较为简单;这里不做介绍 B * C =A 这里B为被乘数,C...
  • 定点小数补码一位乘(校正法)

    千次阅读 2012-10-17 22:37:39
    // 定点小数补码一位乘(校正法) // http://blog.csdn.net/justme0 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; const int n = 4; // 数值位位数 // a,b...
  • 定点小数补码一位乘(Booth比较法)

    千次阅读 2012-10-18 11:34:28
    // 定点小数补码一位乘(Booth比较法) // http://blog.csdn.net/justme0 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; const int n = 4; // 数值位位数 // a,b联合右移...
  • 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号由两数的符号按异或运算得到,而乘积的数值部分则是两个正数相乘之积。设n被乘数和乘数用定点小数表示(定点整数也同样适用) 被乘数 [x]原 = ...
  • 问题出在:假设X,Y有n位数值,根据booth乘法,需要执行n次右移操作,n+1次加补码的操作,但是在我算的时候,发现执行了5次右移时,只执行了2次加补码的操作,而每次加补码好像都要右移,不知道问题出在哪</p><p>...
  • ◆ 先考查两个补码乘法运算的例子 例1:已知 X=0.1011,Y=0.0001(真值) [X]补=01011 , [Y]补= 00001 [X*Y]补=000001011 [X]补*[Y]补=000001011 这时有,[X*Y]补=[X]补*[Y]补 例2:已知 X=0.1011,Y= - 0.0001...
  • 补码一位乘(布斯公式)

    千次阅读 2018-07-03 22:00:00
    本文适用于补码表示的定点小数或定点整数乘法运算(硬件或软件实现) ...◆ 先考查两个补码乘法运算的例子例1:已知 X=0.1011,Y=0.0001(真值)[X]补=01011 , [Y]补= 00001[X*Y]补=000001011[X]补*[Y]补=00...
  • 内容较详细,仅供参考。里面的电路图若有不清晰之处,还请见谅。
  • 补码一位乘: 例: 已知 x=0.1011,y= - 0.0001(真值) [x]补=01011 , [y]补= 11111 [x *y]补=111110101 [x]补 * [y]补=101010101 显然,[x * y]补 ≠ [x]补 * [y]补 ▲ 对两个正数来说,它们补码的乘积等于它们...
  • 下午写这道题,由于没有答案,用计算器得出答案应该是-0.35546875,而用布斯法则得出11 1101 0010 1(双符号). 想着结果应该是 11.1101 0010 1,又用计算器算了下 这个应该是-0.177734375. 开始没注意到,其实-0...
  • 2018年高三毕业,想都没想过自己会成为名程序员,但是既然选择了就坚定的走下去吧。在学校的时候都是用笔记记录自己的学习过程,没想到2020的开头不是那么完美,现在要在家上网课啦,突发奇想想把自己学到的知识...
  • 原码一位乘法与补码一位乘法

    千次阅读 2019-06-28 13:11:00
    在下面的原码一位乘和补码一位乘都遵循以下规则: 1.多余进位舍去 2.一直执行到乘数被用完(被移除完) 3.原码最后需要一位,补码不需要移位 4.原码补码一位乘取值都不去原乘数的数 原码一位乘法 定...
  • 补码一位乘运算和两位乘运算
  • 定点数的原码一位乘法与补码一位乘法 参考博客:https://www.cnblogs.com/Mayfly-nymph/p/11102136.html 参考视频:https://www.bilibili.com/video/BV1x4411q7Fz?p=2 举例 X=0.1101,Y=-0.1011,求XY 1.先不...
  • 技巧上表现在分解乘数的每一位上的1为高一位的一个+1和本位上的一个-1:X×Y=X×(-1+Yi×2i) (逐项展开则得)=X×[-Y0+Y1×2-1+Y2×2-2+…+Yn×2-n]=X×[-Y0+(Y1-Y1×2-1)+(Y2×2-1-Y2×2-2)+…+...
  • 本文目录前言致读者写作目的、实验要求二、概念&剖析三、思路&设计四、电路图五、收获&感悟六、项目资源后话 前言 致读者 学子苦课设久矣——笔者在写下这句话时,叹息连连。 因为基础差,加上之前...
  • 能够实现逻辑运算(逻辑非、逻辑加、逻辑、逻辑异)、定点整数的单符号位补码加减运算、定点整数的原码一位乘法运算和浮点数的加减运算。
  • 因为我们学了原码的乘法运算,这一小节我们来看补码的乘法运算怎么实现,我们需要掌握的是补码一位乘。怎么实现?我们需要掌握的是补码的一位乘法,那由于补码的计算方法和源码的计算方法非常类似,所以我们会和上...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 165
精华内容 66
关键字:

补码一位乘