题目链接:leetcode-29-两数相除此题需要在不使用乘法,除法,取模的情况下求的两数相除的结果,开始看到这道题,以为使用位运算做的,结果发现位运算里面太多的循环,导致并不能通过测试.首先要知道除法的定义,除法的定义其实非常简单,比如:10/3=x=>3x=10=>x+x+x=10所以我们只需要循环执行+除数操作,直到和大于或者小于被除数时,就可以得到当前的商。当然使用减法也是可以的。这就是暴力求解的做法但是单纯的循环执行+除数操作非常耗时,所以需要对步长进行调整,每一次相加如果小于被除数,那么就将步长加一,如果大于被除数了就调整步长为0再次重复上述操作,直到相加结果大于被除数,并且步长为
题目链接:leetcode-29-两数相除此题需要在不使用乘法,除法,取模的情况下求的两数相除的结果,开始看到这道题,以为使用位运算做的,结果发现位运算里面太多的循环,导致并不能通过测试.首先要知道除法的定义,除法的定义其实非常简单,比如:10/3=x=>3x=10=>x+x+x=10所以我们只需要循环执行+除数操作,直到和大于或者小于被除数时,就可以得到当前的商。当然使用减法也是可以的。这就是暴力求解的做法但是单纯的循环执行+除数操作非常耗时,所以需要对步长进行调整,每一次相加如果小于被除数,那么就将步长加一,如果大于被除数了就调整步长为0再次重复上述操作,直到相加结果大于被除数,并且步长为
除法器原理(定点)和十进制除法类似,计算27除以5的过程如下所示:除法运算过程如下:(1)取被除数的高几位数据,位宽和除数相同(实例中是3bit数据)。(2)将被除数高位数据与除数作比较,如果前者不小于后者,则可得到对应位的商为1,两者做差得到第一步的余数;否则得到对应的商为0,将前者直接作为余数。(3)将上一步中的余数与被除数剩余最高位1bit数据拼接成新的数据,然后再和除数做比较。可以得到新的商和余数。(4)重复过程(3),直到被除数最低位数据也参与计算。需要说明的是,商的位宽应该与被除数保持一致,因为除数有可能为1。所以上述手动计算除法的实例中,第一步做比较时,应该取数字27最高位1(3
除法器原理(定点)和十进制除法类似,计算27除以5的过程如下所示:除法运算过程如下:(1)取被除数的高几位数据,位宽和除数相同(实例中是3bit数据)。(2)将被除数高位数据与除数作比较,如果前者不小于后者,则可得到对应位的商为1,两者做差得到第一步的余数;否则得到对应的商为0,将前者直接作为余数。(3)将上一步中的余数与被除数剩余最高位1bit数据拼接成新的数据,然后再和除数做比较。可以得到新的商和余数。(4)重复过程(3),直到被除数最低位数据也参与计算。需要说明的是,商的位宽应该与被除数保持一致,因为除数有可能为1。所以上述手动计算除法的实例中,第一步做比较时,应该取数字27最高位1(3