精华内容
下载资源
问答
  • 二进制除法通过重复减法运算实现即通过重复”从被除数的高位依次取出每一位 被取出的数据加上上次的减法结果 然后减去除数”的处理 求出除法结果 假设: 被除数 R0R1 (占用4字节) 除数 R2R3 (占用4字节) 商 R...
      
    

    二进制的除法通过重复减法运算实现通过重复”从被除数的高位依次取出每一位 被取出的数据加上上次的减法结果 然后减去除数”的处理 求出除法结果

    假设:
    被除数 R0R1 (占用4字节)
    除数 R2R3 (占用4字节)
    商 R0R1 (占用4字节) ******************* 这里需要说明 此程序执行
    结束以后 商的结果保存在被除数中 ************
    余数 R4R5 (占用4字节)
    移位次数 R6L (占用1字节) ******************* 这里需要说明 其数值根据
    被除数的位数定义 这里为32 *************
    操作流程如下:
    a) 余数清零
    b) 判断除数是否为0 如果为0 是错误 不再往下执行.
    c) 设定移位次数
    d) 被除数左移1位 溢出的最高位保存在进位标志C中 再把余数左移1位 把C(被除数溢出的最高位)放入余数的最低位
    e) 余数与除数比较大小(余数减去除数):
    余数 ≧ 除数(减法结果为正)时 被除数的最低位 赋值 1
    余数 < 除数(减法结果为负时 恢复到减法前的余数) 被除数的最低位 赋值 0
    f) 定移位次数递减
    g) 直到移位次数为0否则重复d) ~ f)


    程序代码以renesas为例


    MOV.W #0R4 ;clear R4
    MOV.W #0R5 ;clear R5
    CMP.W R4R2
    BNE LBL1 ;R4R2 不相等 程序跳至LBL1
    CMP.W R4R3
    BEQ ERR ; R4R3 相等 程序跳至ERR
    LBL1:
    MOV.B #32R6L ;set byte counter
    LBL2:
    SHLL R1L ;被除数左移1位 最高位放入C
    ROTXL R1H
    ROTXL R2H
    ROTXL R1H
    ROTXL R5L ;余数左移1位 移入C
    ROTXL R5H
    ROTXL R4H
    ROTXL R4H
    BSET #0R1L ; 被除数的最低位 赋值 1

    SUB.W R3R5 ;余数 减去 除数
    SUBX.B R2LR4L
    SUBX.B R2HR4H
    BCC LBL3 ; 余数 ≧ 除数(减法结果为正) 程序跳至LBL3
    ADD.W R3R5 ; 余数 < 除数(减法结果为负时 恢复到减法前的余数)
    ADDX.B R2LR4L
    ADDX.B R2HR4H
    BCLR #0R1L ; 被除数的最低位 赋值 0
    LBL3:
    DEC.B R6L ; 定移位次数递减
    BNE LBL2 ; 移位次数为不0 程序跳至LBL2
    BRA EXIT ; 程序跳至EXIT
    ERR: ; 添加除数为0 的处理
    EXIT:
    RTS


    展开全文
  • 如果你对这部分的内容十分熟悉,请直接跳到下一步,学习二进制的长除法。被除数除以除数,所得结果为商。比较除数和被除数的首位数。如果除数比较大,就继续将下一位数加到被除数中,直至被除数大于除数。例如,用...

    ae3228b3d0c36cc841599e98fc333206.png

    1回顾十进制的长除法

    十进制是以10为基数的数制,我们日常使用的数字都是十进制数字。如果你已经很久没有做过长除法,不妨利用算题172 ÷ 4来复习一下。如果你对这部分的内容十分熟悉,请直接跳到下一步,学习二进制的长除法。

    被除数

    除以

    除数

    ,所得结果为

    比较除数和被除数的首位数。如果除数比较大,就继续将下一位数加到被除数中,直至被除数大于除数。例如,用172 ÷ 4时,我们会比较4和1,发现4 > 1后,就比较4和17。

    在比较的被除数的最后一位上写下商的首位数。比较4和17,我们发现17整除4得4,因此,我们将商的首位数4写到7的上面。

    相乘和相减后得到余数。用商的位值乘以除数,本题中即4 x 4 = 16。在17下面写16,然后用17 - 16,得到余数1。

    重复。再次将除数4与余数1比较,发现4 > 1,“结合”被除数的下一位数,然后比较4和12。12是4的三倍,而且没有余数,所以将3写作商的下一位数。答案是43。

    20090cb2d72c6a858383d57140b0c190.png2列出二进制的长除法问题。

    以10101 ÷ 11为例。将问题写成长除法形式,以10101为被除数,11为除数。在上面留出空处写商,下面写下计算过程。

    6293f76698f1c3fdc0ff0fd3b02a6ffa.png

    3比较除数和被除数的首位数。

    二进制长除法的解题方法与十进制长除法一样,但实际上前者要简单得多。整除被除数时,每一位的结果要么等于0,要么等于1:

    11 > 1,所以1“无法”整除11。在商的第一位,也就是被除数首位数字的上方,写一个0。

    60795788e67728012e65f56d33ae8a50.png

    4继续加入下一位数,直到结果为1。

    以下是例题后面的计算怎么做二进制数的除法运算的方法:

    结合被除数的下一位数。11 > 10。在商的位置再写一个0。

    结合下一位数。11 < 101。在商的位置再写一个1。

    f4ad3992c6ba8d06d484ea7f4ea47ea3.png

    5计算余数。

    和十进制的长除法一样,我们用刚刚算出的1乘以除数11,然后将结果与刚才计算中被除的几位数对齐,写到被除数下面。在二进制中,由于1乘以除数总是等于除数,我们可以将之简化:

    在被除数下面写下除数。这里,我们将11与被除数的前三位数101对齐,写到它的下面。

    计算101 - 11,得到余数10。如果需要复习二进制数的减法运算,可以参阅本网站的相关文章。

    cbec0eaf4ea375e418d51ed6a1da4cd3.png

    6重复这一怎么做二进制数的除法运算的方法,直至问题解决。

    将被除数的下一位数与余数结合,得到100。由于11 < 100,所以在商的下一位数写1。使用之前的方法,继续计算:

    在100下面写11,相减得到1。

    结合被除数的最后一位数,得到11。

    11 = 11,所以商或答案的最后一位数写1。

    没有余数,因此问题得到解决。答案是

    00111

    ,或者简化成111。

    828b2f44c878c669bc2fdc2168f7e539.png

    7如有必要,添加小数点。

    有时,结果不是整数。如果使用最后一位数后仍有余数,就在被除数后面加”.0”,在商里面加”.”,这样,你可以再次结合下一位数,并继续计算。重复这一怎么做二进制数的除法运算的方法,直至答案足够精确,然后四舍五入。在纸上计算时,你可以去掉最后一位数的0,取整,如果最后一位数是1,就去掉这个1,然后在新的最后一位数字上加1。在编程中,请遵循某种四舍五入的标准算法,以避免在二进制数和十进制数之间转换时出错。

    二进制除法的结果通常包含循环小数,这种情况比十进制数制多。

    由于“小数点”(decimal point)只用于十进制,所以在任何其他数制中,我们会使用更通用的术语“小数点”(radix point)。

    展开全文
  • 二进制除法

    2014-09-08 17:20:49
    二进制除法,模仿纸和笔下进行长除法运算,实现了预期的功能
  • 二进制除法运算原理

    千次阅读 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.运算结果余数
    11/11001
    210/110010
    3100/1100100
    41000/01101011
    50111/011011
    610/11001
    (个位数,循环结束)
    //二进制除法运算
    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.4.1 二进制加法二进制加法与十进制加法相类似,所不同的是,二进制加法中是“逢二进一”,其法则为:0+0=01+0=10+1=11+1=0 并进位例如:两个二进制数相加:10110101+ 10001110______________1010000111.4.2 二进制...

    1.4.1 二进制加法

    二进制加法与十进制加法相类似,所不同的是,二进制加法中是“逢二进一”,其法则为:

    0+0=0

    1+0=1

    0+1=1

    1+1=0 并进位

    例如:

    两个二进制数相加:

    10110101

    + 10001110

    ______________

    101000011

    1.4.2 二进制减法

    在二进制减法中,同样有如下法则:

    0-0=0

    1-0=1

    1-1=0

    0-1=1  有借位

    当不够减时需要借位,高位的1等于下一位的2,即“借一当二”。

    例如:

    两个二进制数相减:

    10110100

    - 01010111

    ______________

    01011101

    1.4.3 二进制乘法

    二进制乘法与十进制乘法是一样的。但因为二进制数只由0和1构成,因此,二进制乘法更简单。其法则如下:

    0×0=0

    1×0=0

    0×1=0

    1×1=1

    例如:

    二进制数1101.1与101.1相乘:

    1101.1   被乘数(13.5)10

    ×   101.1   乘数(5.5)10

    __________

    11011

    11011

    00000

    + 11011

    _________________

    1001010.01    乘积 (74.25)10

    再看下面的例子:

    (1011) 2×(1101)2

    1011     被乘数(11)10

    × 1101     乘数(13)10

    _________

    1011

    0000

    1011

    +  1011

    _________________

    10001111     乘积(143)10

    1.4.4 二进制除法

    二进制除法是乘法的逆运算,其方法与十进制除法是一样的,而且二进制数仅由0,1构成,做起来更简单。

    例如:

    求二进制数100111除以110的商的方法如下:

    099e0060782490fb68224e4fa5ce8b1d.png

    展开全文
  • 二进制数的运算方法

    万次阅读 多人点赞 2017-08-29 14:12:13
    二进制数的算术运算包括:加、减、乘、四则运算,下面分别予以介绍。 (1)二进制数的加法 根据“逢二进一”规则,二进制数加法的法则为: 0+0=0 0+1=1+0=1 1+1=0 (进位为1) 1+1+1=1 (进位为1...
  • 模2除法与二进制除法

    2021-05-08 14:04:58
    模2除法与二进制除法 二进制加减乘除与十进制的如出一辙,“模2和”、“模2减”,名称、算法虽然不一样,但是,结果是相同的,实际上都是两个二进制数字相“异或”。 异或运算: 如果两个二进制数字相同,“异或”的...
  • 【转】二进制除法

    千次阅读 2008-09-19 22:15:54
    和二进制乘法一样,二进制除法比十进制除法要简单,二进制除法使用和十进制一样的除法运算法则(长除法longhand),而且二进制除法要更简单,因为在长除法的每一步,都能很容易地看出被除数是否包含除数。...
  • 二进制数的运算

    2020-06-01 23:08:44
    有关二进制的算术运算、逻辑运算
  • 不能确定哪几个比特出错了二进制除法(和十进制除法其实一样!)模2除法(不同于二进制除法!本质就是异或而已) 复习网络,不小心碰到差错控制的CRC冗余码计算,随便算了一下,发现自己算的不对,于是发现了一串...
  • 谈CRC循环冗余校验的之前,先把二进制除法说一下,先回忆一下十进制之间的除法是如何运算的, 这个式子在做除法的时候满足了这几个条件: 从被除数的最左边开始向右做除法 被除数运算的两位永远比除数大 如果相减...
  • 二进制除法转乘法原理

    千次阅读 2017-08-29 21:21:43
    为了加快运行速度,编译器会将一些除法运算转化成乘法运算。 其中一个转换x/k的方法是,先将k变成1/k 的小数形式,再将1/k 左移N位 得到一个数b 以后每计算 x/k 时,就先计算 x∗b的乘积,再将乘积右移N...
  • 二进制除法与模2除法的区别(转)

    千次阅读 2012-11-28 17:05:05
    模2除法(转) ...二进制除法,还有一种“模2除”,很多人就不熟悉了,甚至连“百度百科”中,也写不清楚这个概念和方法。此外还有:“模2和”、“模2减”等等。 二进制数字的计算,很有特点。 两
  • 使用Matlab生成一个〖0 ~2〗^60-1的随机数,用2048个12位的多项式对其做除法运算,查看其余数的重复情况。 用足够多的随机数(〖0 ~2〗^60-1)做第一问的除法运算,观察总体的重复的概率分布。
  • 二进制和位运算

    千次阅读 2019-03-15 20:03:26
    所有编程语言都是一种人和计算机之间的翻译工具,人的数组语言翻译成二进制给计算机读取,然后把计算机的二进制数据翻译成人类的语言呈现出来。 16进制 16进制用于缩写(简写)2进制,将2进制从后向前 每4位数转换...
  • 文章目录十进制转二进制机器数与真值原码、反码、补码顺便说一说BCD码数的定点表示与浮点表示IEEE 754标准定点运算加法与减法运算溢出浮点运算加法与减法运算 十进制转二进制 正整数转二进制,这个简单,2取余,倒...
  • 2)二进制的简写形式二、进制运算1)八进制运算表(1) 加法运算表(2)乘法运算表(3)八进制简单运算题三、数据宽度1)什么是数据宽度2)计算机中常用的基本数据宽度四、无符号数有符号数进制进制也就是进位计数制,是人为...
  • 二进制四则运算

    千次阅读 2018-10-30 17:11:50
    二进制的原理如下: (注意加法的进位和减法的借位) 一、加法法则: 0+0=0,0+1=1,1+0=1,1+1=0(注意向前进位) 例如:11111+1=100000  11111 + 1 --------- 100000 因为最低一位1+1=0所以需要向前(高位...
  • 二进制的位运算

    2019-02-17 11:50:13
    Java中的二进制运算分为: 按位取反 按位与 按位或 按位异或 左移 右移 一:按位取反 ~ 顾名思义,就是将二进制位的每一位取反 例: 000101100 ~000101100 =111010011 但是在上机运行的时候,System.out....
  • 整数部分,把十进制转成二进制一直用短除法分解至商为 0。读余数从下读到上,即是二进制的整数部分数字。 小数部分,则用其乘 2,取其整数部分的结果,再用计算后的小数部分依此重复计算,算到小数部分全为 0 为止,...
  • 我们一般将十进制转换成而今使用的是对二求余然后二的方法,其实很多时候我们不能更好的理解,我今天讲解一下通过位运算的方法怎么实现进制转换。 思路: 无论是数字还是字母在计算机里存储的都是二进制形式,有人...
  • 文章目录原理十进制分解程序示例运算结果   在嵌入式环境中虽然有乘法运算器,而且芯片运算速度越来越快,但位运算还是最快速的,为了提高计算效率,可以将乘法运算使用位运算替换。 原理   乘法可以用按位运算...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,924
精华内容 29,969
关键字:

二进制怎么除法运算