精华内容
下载资源
问答
  • 二进制乘除法

    2020-06-23 23:15:45
    计算机中原码的乘除运算是通过移位完成的,那么二进制乘除法是怎么操作的呢? 一. 二进制乘法: 0x02<<3结果为00010000(0x10,16),即等价于(0x02)*(2^3) 由上可知00000010 * 00001000 = 00010000 所以...

    计算机中原码的乘除运算是通过移位完成的,那么二进制乘除法是怎么操作的呢?

    . 二进制乘法:
     	0x02<<3结果为00010000(0x1016),即等价于(0x02)*(2^3)
      	由上可知00000010 * 00001000 = 00010000
      	所以可推出二进制乘法即相当于移位操作
      	举个例子:1.1101(1.8175) * 11.1011(3.6875)
      	结果为110.10101111(6.68359375)
     	 过程如下:
      		1. 11.1011中的0.0001 乘上1.1101,即右移4位,为0.00011101
      		2. 11.1011中的0.001  乘上1.1101,即右移3位,为0.0011101
      		3. 11.1011中的0.1    乘上1.1101,即右移1位,为0.11101
      		4. 11.1011中的1      乘上1.1101,即不移动 ,为1.1101
      		5. 11.1011中的10     乘上1.1101,即左移1位,为11.101
      		6. 结果相加为110.10101111
    
    . 二进制除法
    	回顾一下十进制除法:
    	795 / 13的过程:
    		1. 795大于13 ,取6,余1
    		2. 15大于13  ,取1,余2
    		3. 2小于13   ,取0,余2
    		4. 所以结果是612
    	同理二进制除法也是如此:
    		举个例子:11.11(3.75) / 101(5) = 0.11(0.75)
    		1. 111大于101,上1,余10
    		2. 101等于101,上1,余0
    		3. 最后右移两位,为0.11(0.75)
    

    以上是我看书后对二进制乘除法的总结(若是原码乘除则需先考虑符号位即最高位),不足之处请在评论区指出。

    展开全文
  • 二进制乘除法运算原理

    千次阅读 2020-04-01 16:42:32
    二进制乘除法原理 计算机所能完成的最基本操作是加减法和左右移。 虽然ISA中一般都有MUL类指令,但是这些经过译码之后最终的元操作还是加法和移位指令。 二进制乘法 假设不能使用乘除运算求a×b的结果,当a=b=123时...

    二进制乘除法原理

    计算机所能完成的最基本操作是加减法和左右移。
    虽然ISA中一般都有MUL类指令,但是这些经过译码之后最终的元操作还是加法和移位指令。

    二进制乘法

    假设不能使用乘除运算求a×b的结果,当a=b=123时,最直接的方法是通过88个88相加。但是,我们不难发现这样的规律:
    123 × 123 = (100+20+3)×123 = (100×123) + (20 × 123) + (3 × 123)
    因此,我们需要进行计算的次数为min(len(a), len(b))
    根据这个原理,不难想出二进制的乘法运算:
    0011 * 1001 = ( 0011 * 1000)+( 0011 * 0001)
    注意,这时应该使用位移运算来取代乘法运算:
    0011*1000 => 3<<3
    0011 * 0001 => 3<<0

    //不用乘除做整数乘法运算
    int Mult(int a, int b){
    	int ans = 0;
    	for (int i = 0; i < 32; i++){
    		ans += ( b & (1 << i) ? a << i : 0);
    	}
    	return ans;
    }
    

    二进制除法

    二进制除法的原理与在十进制时差不多,但实现起来要比二进制乘法稍微复杂一些,先上一个例子(38除以6等于6余2):
    在这里插入图片描述
    我们从被除数的最高位开始,每步循环结束后被除数必定小于除数,然后通过位移的方式让被除数长度加1。

    No. 运算 结果 余数
    1 1/110 0 1
    2 10/110 0 10
    3 100/110 0 100
    4 1000/0110 1 011
    5 0111/0110 1 1
    6 10/110 0 1
    (个位数,循环结束)
    //二进制除法运算
    int Dvi(int a, int b){
    	int ans = 0;
    	for (int j = 31; j >= 0; j--){
    		int tmp = a >> j;
    		if (tmp >= b){
    			ans = ans | (1 << j);
    			a -= (b << j);
    		}
    	}
    	return ans;
    }
    
    展开全文
  • 计组随笔 —— 二进制乘除法运算❝电子档笔记整理,只是笔记,不是教程。❞目录计组随笔 —— 二进制乘除法运算目录1. 定点数一位乘法1.1 定点原码一位乘法1.2 定点补码一位乘法(布斯公式)2. 二进制除法运算2.1 定点...

    计组随笔 —— 二进制乘除法运算

    电子档笔记整理,只是笔记,不是教程。

    目录

    • 计组随笔 —— 二进制乘除法运算

    • 目录

    • 1. 定点数一位乘法

      • 1.1 定点原码一位乘法

      • 1.2 定点补码一位乘法(布斯公式)

    • 2. 二进制除法运算

      • 2.1 定点除法运算

      • 2.2 浮点数的运算方法


    1. 定点数一位乘法

    定点小数:小数点位置固定于最高位之前。定点整数:小数点位置固定于最高位之后。

    1.1 定点原码一位乘法

    计算公式:

    f3565abadfe9b42ca4c66e3b570da2c9.png

    计算机计算过程:

    1. 判断符号,正负得负、负负得正、正正仍正。
    2. 判断乘数数值的最后一位是1还是0
    • 是1则加上被乘数数值后右移一位,舍弃结果最低位
    • 是0则直接右移一位,舍弃结果最低位。
    1. 重复第二步,直到右移次数等于乘数的数值位数。

    设X = 0.1101, Y=0.1011,求X·Y

    1. 判断符号位7b7903864cc88913d228826840d49965.png

    2. 计算过程

    b51bb0f859fdb42ffcff094b2e8816f8.png

    1.2 定点补码一位乘法(布斯公式)

    布斯算法不需要判断符号位。

    计算机计算过程:

    1. 初始值给乘数最低位之后补0,且乘数用单符号位表示
    2. 根据运算规则,执行操作。c56f9a5232341e540f71de177d79459d.png
    3. 右移一位
    4. 重复2、3步骤,当移位次数等于乘数数值位数时,再进行最后一次步骤2

    设X = -0.1101, Y=0.1011, 求[X·Y]的补码

    71a1daa63b83855283c2c512674c1e3e.png

    2. 二进制除法运算

    2.1 定点除法运算

    2.1.1 恢复余数法 人工计算步骤:

    1. 原码乘除法操作时符号位单独运算。
    2. 判断被除数和余数的大小,若除数小,商上0,余数补0;若除数大,则商上1,余数补0,重复上述步骤直到结果满足要求。
    3. 上述运算结果连接即最终结果

    机器运算很少会实现,一般是商和余数左移操作以及减法操作组合。

    2.1.2 恢复余数法演算过程

    计算0.1011/0.1101

    1e280196790b0e09076723f4fa87b965.png

    2.1.3 加减交替法

    加减交替法也是恢复余数法的一种修正,这种方法也需要引入补码。

    加减交替法一般步骤是让符号位参与运算,而不需要被除数和除数的大小而进行多余的操作。可以直接除数可以直接与被除数补码相减,所得余数为负数时,可以直接让余数逻辑所以并加上被除数,从而直接得到下一步的余数,而不需要恢复余数。

    2.2 浮点数的运算方法

    2.2.1 浮点数的加减运算

    一般步骤:

    1. 对阶步骤。阶码值小的数的尾数和阶码同时分别进行右移和自增(+1)操作,直到两个数的阶码相等。
    2. 尾数加减运算。尾数直接作为定点数进行加减运算。
    3. 规格化操作。整个运算结果进行规格化处理,使尾数尽可能以最大值的形式出现。

    2.2.2 规格化操作规则

    1. 向右规格化。当尾数运算结果符号位不同时,即溢出,则将尾数右移一位,阶码自增一位。
    2. 向左规格化。当尾数运算结果符号位相同时,而尾数的最高位数值位与符号位相同,则进行左移操作,直到最高位数值位与符号位的值不同为止。
    3. 舍入操作。进行上述步骤1前,对数值位的最低位进行0舍1入操作。即当移掉的最高位为1时,在尾数的末位加1。此步骤可能会和向右规格化重复操作。

    2.2.3 浮点数的乘除法运算

    运算步骤:

    1. 阶码加减运算。为溢出判断,阶码采用双符号位参与两个浮点数的阶码加减运算。
    2. 尾数乘除运算。参照定点小数的乘除法运算对两个浮点数的尾数进行乘除运算,
    3. 结果规格化处理:参照上述规格化操作对运算结果进行相关操作。
    4. 判断溢出:浮点数的溢出一般由浮点数的阶码确定,处理和上述规格化操作一致。
    展开全文
  • 计组随笔 —— 二进制乘除法运算❝电子档笔记整理,只是笔记,不是教程。❞目录计组随笔 —— 二进制乘除法运算目录1. 定点数一位乘法1.1 定点原码一位乘法1.2 定点补码一位乘法(布斯公式)2. 二进制除法运算2.1 定点...

    计组随笔 —— 二进制乘除法运算

    电子档笔记整理,只是笔记,不是教程。

    目录

    • 计组随笔 —— 二进制乘除法运算

    • 目录

    • 1. 定点数一位乘法

      • 1.1 定点原码一位乘法

      • 1.2 定点补码一位乘法(布斯公式)

    • 2. 二进制除法运算

      • 2.1 定点除法运算

      • 2.2 浮点数的运算方法


    1. 定点数一位乘法

    定点小数:小数点位置固定于最高位之前。定点整数:小数点位置固定于最高位之后。

    1.1 定点原码一位乘法

    计算公式:

    36fb9c53678a3a7a78885cb74095dacf.png

    计算机计算过程:

    1. 判断符号,正负得负、负负得正、正正仍正。
    2. 判断乘数数值的最后一位是1还是0
    • 是1则加上被乘数数值后右移一位,舍弃结果最低位
    • 是0则直接右移一位,舍弃结果最低位。
    1. 重复第二步,直到右移次数等于乘数的数值位数。

    设X = 0.1101, Y=0.1011,求X·Y

    1. 判断符号位cd595641cde67bdf7a1513cca7e6dd32.png

    2. 计算过程

    41eebf9eb5d9935fea1ed85f1db391c7.png

    1.2 定点补码一位乘法(布斯公式)

    布斯算法不需要判断符号位。

    计算机计算过程:

    1. 初始值给乘数最低位之后补0,且乘数用单符号位表示
    2. 根据运算规则,执行操作。ff2120aecc18629e9768dd941b31aa65.png
    3. 右移一位
    4. 重复2、3步骤,当移位次数等于乘数数值位数时,再进行最后一次步骤2

    设X = -0.1101, Y=0.1011, 求[X·Y]的补码

    315089a100bc9c2dd968a356540c4ad1.png

    2. 二进制除法运算

    2.1 定点除法运算

    2.1.1 恢复余数法 人工计算步骤:

    1. 原码乘除法操作时符号位单独运算。
    2. 判断被除数和余数的大小,若除数小,商上0,余数补0;若除数大,则商上1,余数补0,重复上述步骤直到结果满足要求。
    3. 上述运算结果连接即最终结果

    机器运算很少会实现,一般是商和余数左移操作以及减法操作组合。

    2.1.2 恢复余数法演算过程

    计算0.1011/0.1101

    dd20bad3489ab1954de366c6439b3a1e.png

    2.1.3 加减交替法

    加减交替法也是恢复余数法的一种修正,这种方法也需要引入补码。

    加减交替法一般步骤是让符号位参与运算,而不需要被除数和除数的大小而进行多余的操作。可以直接除数可以直接与被除数补码相减,所得余数为负数时,可以直接让余数逻辑所以并加上被除数,从而直接得到下一步的余数,而不需要恢复余数。

    2.2 浮点数的运算方法

    2.2.1 浮点数的加减运算

    一般步骤:

    1. 对阶步骤。阶码值小的数的尾数和阶码同时分别进行右移和自增(+1)操作,直到两个数的阶码相等。
    2. 尾数加减运算。尾数直接作为定点数进行加减运算。
    3. 规格化操作。整个运算结果进行规格化处理,使尾数尽可能以最大值的形式出现。

    2.2.2 规格化操作规则

    1. 向右规格化。当尾数运算结果符号位不同时,即溢出,则将尾数右移一位,阶码自增一位。
    2. 向左规格化。当尾数运算结果符号位相同时,而尾数的最高位数值位与符号位相同,则进行左移操作,直到最高位数值位与符号位的值不同为止。
    3. 舍入操作。进行上述步骤1前,对数值位的最低位进行0舍1入操作。即当移掉的最高位为1时,在尾数的末位加1。此步骤可能会和向右规格化重复操作。

    2.2.3 浮点数的乘除法运算

    运算步骤:

    1. 阶码加减运算。为溢出判断,阶码采用双符号位参与两个浮点数的阶码加减运算。
    2. 尾数乘除运算。参照定点小数的乘除法运算对两个浮点数的尾数进行乘除运算,
    3. 结果规格化处理:参照上述规格化操作对运算结果进行相关操作。
    4. 判断溢出:浮点数的溢出一般由浮点数的阶码确定,处理和上述规格化操作一致。
    展开全文
  • 二进制乘除法的实现

    万次阅读 2017-09-25 11:49:20
    转自:...因为无论是减法还是乘法,都可以由加法运算来替代,唯有除法不能由加法替代。 了解计算机运算的规律,可以有助于我们理解很多程序代码上无法理解的内容。比如上章提到的溢
  • 二进制乘法运算: 一、定点数一位乘法: 注意:如果小数点后面有4位,则要进行右移4次,如果有6位,则要进行右移6次,依次类推。 在求部分积时,由于前一次部分积的最低位不再参与运算,因此可将其右移一位...
  • 不管是计算机一级,还是计算机二级,选择题里都会涉及到“进制转换”...二进制、八进制、十进制、十六进制........讲真,进制转换就跟小学数学题一样简单,计算方法就是:加减乘除!就像下图这样:(字有点丑,请忽略...
  • 二进制乘法运算: 一、定点数一位乘法: 注意:如果小数点后面有4位,则要进行右移4次,如果有6位,则要进行右移6次,依次类推。 在求部分积时,由于前一次部分积的最低位不再参与运算,因此可将其右移一位,相加数...
  • } } 也就是加入了一个基础的加法运算,此时这段代码已经变成二进制文件放到了内存中,现在要继续执行,也就是要执行代码的加法操作,此时的数据a和b,也就是5和3已经是二进制的形式在内存中,现在需要把a和b做加法...
  • 二进制除法怎么算(共2篇)二进制的运算法则1 2 微型计算机运算基础1 2 1 二进制数的运算方法电子计算机具有强大的运算能力,它可以进行两种运算:算术运算和逻辑运算。1.二进制数的算术运算二进制数的算术运算包括:...
  • 实验三 二进制乘除法编程实验 更多微机实验:https://blog.csdn.net/yxp189/column/info/39992 汇编语言-微机原理与接口技术-实验 注意:未经允许,请勿转载! 转载请标明出处~ 适用课程:微机原理与接口...
  • 展开全部除法就是移位相减例:62616964757a686964616fe59b9ee7ad943133336565373999用2进制是 11000115是101先1100011 - 1010000 = 10011(其中二进制1010000 = 52的4次幂)再10011 - 1010 = 1001 ( 其中二进制1010 ...
  • 为什么二进制乘除法可以转换成移位运算呢? 如: a=5; a=a*9; 可以转换成a=(a a=a*7 可以转换成a=(a a=a/12; 可以转换成 a=(a>>4)-(a 因为乘除和减法都能转换成移位和加法运算,所以cpu中只需要一个...
  • 循环到B还剩最后1位的时候,循环结束,最后再把S向右位移1位,得到最终结果 除法(整数/原码): 未完待续 #include #include #include #define MAXSIZE 64 //名称说明:bin是指不区分补码或原码的二进制码 //补码...
  • 本文包括4位二进制乘法(4位4位)和8位二进制除法(8位除4位)的详细计算过程。 1.创作原因 计组实验中的涉及到此问题,当时上网查阅了许多博客和资料都没能理解这两者的计算过程,因此想写一篇博客为后来者提供...
  • 引言除法器在FPGA里怎么实现呢?当然不是让用“/”和“%”实现。在Verilog HDL语言中虽然有除的运算指令,但是除运算符中的除数必须...对于这种情况,一般使用相应的算法来实现除法,分为两类,基于减法操作和基于...
  • 引言除法器在FPGA里怎么实现呢?当然不是让用“/”和“%”实现。在Verilog HDL语言中虽然有除的运算指令,但是除运算符中的除数必须...对于这种情况,一般使用相应的算法来实现除法,分为两类,基于减法操作和基于...
  • 2.5我们着重介绍了二进制整数的加、减运算,本次我们继续介绍运算。本章是迄今为止最难的一章,希望各位猿友有所收获,也别忘了“点个推荐哦”。   引言    运算一直是程序运行当中一个重要的环节,而...
  • 有些编译器和硬件是支持乘除法和浮点运算,运用起来也是很方便!唯一让我不满的就是很占用ROM ! 所以某些平台恰好可以用移位来换算! 学习推算心得: 分母是为 2的平方的情况下成立! 2.4.8.16.32.64.128.256....
  • 2取余法的依据 假 定十进制整数为,等 值 的 进 制 数 为,则 依 公 式可知         上式表明,若将除以2,则商为,而余数即为。同理, 上式所得商再除以 2,有   &...
  • 计算机组成原理 定点运算-移位、加、减、(详细解析-看完就会)​blog.csdn.net...在计算机中二进制移位左移:数值绝对值变为原来2倍右移:数值绝对值变为原来1/2倍4.算术移位规则有符号位的移位左移1位:机器数...
  • 2.高精度÷单精度:模拟除法+去除前导零(On) 3.高精度×单精度:模拟乘法+向后开辟新位置(On^2) 4.输出 二、存储变量: char s[ ]: 读取字符 int a[ ]: 按位存储十进制 int b[ ]: 按位存储倒置的二进制 ...
  •  2.5我们着重介绍了二进制整数的加、减运算,本次我们继续介绍运算。 引言  运算一直是程序运行当中一个重要的环节,而在二进制的运算过程当中,加法运算又是重中之重,它基本上奠定了二进制运算的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 428
精华内容 171
关键字:

二进制乘除法