简易理解并计算二进制除法

二进制除法可以算是二进制算法中最难(相对加减乘)的一个,有些人在理解上出现一些误差,下面教大家如何简单理解并计算二进制除法

首先介绍一下二进制的运算规则:1÷1=1;1÷0=0(无意义);0÷1=0;0÷0=0(无意义)

众所周知小学除法(十进制)15÷7不够除要向前面借1当10,而二进制不同的就是借1当2(补充:二进制加法1+1=10)

以下图为例:符号内部的11010110110000为被除数;侧边的10011为除数;最上面的1100001010为商;最下面多出来的数字1110为余数;这很好理解。

例如二进制100除11:讲解:首先对位10÷11不够除写0(0是为了方便讲解:实际算法中位于商的首位是不用写的),被除数向右多添一位变为100÷11,后面00不够除向前借一位变为20÷11(脑中思维公式),前面2÷1够,而后面0÷1不够,所以个位还要向十位借一位数变为12÷11(脑中思维公式),即可计算出商为1,余数为1.(时刻牢记二进制向前借一位是变成2,不是10,这是新手最容易看不懂公式也是最容易出现问题的地方)

当理解完上面的讲解后,对二进制的除法就已经学会了,方式一样,不一样的只是数值的大小

 二进制算法补充:

加:1+1=10        1+0=1        0+1=1        0+0=0

减:1-1=0          1-0=1         0-1=1(有借位)         0-0=0

乘:1×1=1        1×0=0        0×1=0        0×0=0

除:1÷1=1        1÷0=0(无意义)        0÷1=0        0÷0=0(无意义)

再次提醒(二进制算法向前借数都换为2,并非为10)

  • 14
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是一个简单的Verilog代码实现二进制除法: ```verilog module binary_divide(dividend, divisor, quotient, remainder); input [7:0] dividend; // 被除数,8位二进制数 input [7:0] divisor; // 除数,8位二进制数 output [7:0] quotient; // 商,8位二进制数 output [7:0] remainder; // 余数,8位二进制数 reg [7:0] temp_dividend; // 存储被除数 reg [7:0] temp_divisor; // 存储除数 reg [7:0] temp_quotient; // 存储商 reg [7:0] temp_remainder; // 存储余数 reg [3:0] i; // 循环计数器 initial begin temp_dividend = dividend; temp_divisor = divisor; temp_quotient = 8'b0; // 初始化商为0 temp_remainder = temp_dividend; // 初始化余数为被除数 end always @(*) begin for (i = 3; i >= 0; i = i - 1) begin temp_remainder = temp_remainder << 1; // 余数左移1位 if (temp_remainder >= temp_divisor) begin // 如果余数大于等于除数 temp_remainder = temp_remainder - temp_divisor; // 余数减去除数 temp_quotient[i] = 1; // 商的当前位为1 end end end assign quotient = temp_quotient; assign remainder = temp_remainder; endmodule ``` 这个代码使用了一个简单的循环来计算商和余数。首先,被除数和除数被存储在reg类型的变量中。然后,商和余数都被初始化为0和被除数。接下来,使用一个循环计算商和余数。在每次循环中,余数左移1位,如果余数大于等于除数,则将余数减去除数,并将商的当前位设置为1。最终,计算得到的商和余数被输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值