- 主题:只有32/16硬件除法器,如何实现32/32?
如题,某单片机只有32/16的硬件除法器,软件怎么设计算法,实现32/32?没有编译器的支持。ps:是有符号数
- 来自「最水木 for iPhone 7 Plus」
※ 修改:·whoswho 于 May 11 21:47:44 2021 修改本文·[FROM: 223.73.185.*]
※ 来源:·最水木 客户端·[FROM: 223.73.185.*]
修改:whoswho FROM 223.73.185.*
FROM 223.73.185.*
除法一般是转换成加法和乘法
32/16的除法对32/32没有太大帮助
32/((2^16)*High16Bit + Low16bit), 1/B可以用泰勒级数展开,但无法化解成两个16位的
我之前实现是直接用newton-raphson算法来做除法的
【 在 whoswho 的大作中提到: 】
: 如题,某单片机只有32/16的硬件除法器,软件怎么设计算法,实现32/32?没有编译器的支持。ps:是有符号数
- 来自「最水木 for iPhone 7 Plus」
--
FROM 64.207.220.*
“除法一般是转换成加法和乘法”,这里不太明白,你是说除法吧?
【 在 eematlab 的大作中提到: 】
: 除法一般是转换成加法和乘法
:
: 32/16的除法对32/32没有太大帮助
: ....................
- 来自「最水木 for iPhone 7 Plus」
--
FROM 183.14.133.*
硬件上并没有除法
所以它是用加法和乘法来实现除法的
最简单的除法实现就像我们手工做的一样,相减然后移位
基于这个方法,有个一个改进的SRT
我之前是基于newton-raphson实现过硬件除法, 可以看一下下面的wiki
https://en.wikipedia.org/wiki/Division_algorithm
基于32/16来实现32/32应该是不现实的
【 在 whoswho 的大作中提到: 】
: “除法一般是转换成加法和乘法”,这里不太明白,你是说除法吧?
: :
: - 来自「最水木 for iPhone 7 Plus」
--
FROM 64.207.220.*
谢谢
【 在 eematlab 的大作中提到: 】
: 硬件上并没有除法
:
: 所以它是用加法和乘法来实现除法的
: ....................
- 来自「最水木 for iPhone 7 Plus」
--
FROM 183.14.133.*
先不考虑符号,用32位除高16位和高16位加1,商在这两数之间,扫一遍中间的数×除数和被除数比就行了,可以一个bit一个bit的扫,就像长除法
符号单独考虑很容易
--
FROM 117.186.1.*
可以。
【 在 awuwu 的大作中提到: 】
: 先不考虑符号,用32位除高16位和高16位加1,商在这两数之间,扫一遍中间的数×除数和被除数比就行了,可以一个bit一个bit的扫,就像长除法
: 符号单独考虑很容易
--
FROM 114.246.97.*