社区
C语言
帖子详情
如何实现除法运算
0uhuang
2005-02-23 09:04:01
Arm平台里的,只有+ - * 没有除法运算,请问如何实现一个10bit的数除以一个32bit的。
谢谢。
...全文
1014
15
打赏
收藏
如何实现除法运算
Arm平台里的,只有+ - * 没有除法运算,请问如何实现一个10bit的数除以一个32bit的。 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
copygirl
2005-02-24
打赏
举报
回复
不过,如果是得到整除数/,用减法很好实现;如果是要求得到小数,那就麻烦了。
bzCpp
2005-02-24
打赏
举报
回复
你用C写个程序,然后反汇编一下不就看到了吗?
抄 ADS12上的:
__rt_sdiv [0xe2102480] ands r2,r0,#0x80000000
00008140 [0x42600000] rsbmi r0,r0,#0
00008144 [0xe0323041] eors r3,r2,r1,asr #32
00008148 [0x22611000] rsbcs r1,r1,#0
0000814c [0xe070c1a1] rsbs r12,r0,r1,lsr #3
00008150 [0x3a000020] bcc 0x81d8 ; (__rt_sdiv + 0x9c)
00008154 [0xe070c421] rsbs r12,r0,r1,lsr #8
00008158 [0x3a00000f] bcc 0x819c ; (__rt_sdiv + 0x60)
0000815c [0xe1a00400] mov r0,r0,lsl #8
00008160 [0xe38224ff] orr r2,r2,#0xff000000
00008164 [0xe070c221] rsbs r12,r0,r1,lsr #4
00008168 [0x3a000017] bcc 0x81cc ; (__rt_sdiv + 0x90)
0000816c [0xe070c421] rsbs r12,r0,r1,lsr #8
00008170 [0x3a000009] bcc 0x819c ; (__rt_sdiv + 0x60)
00008174 [0xe1a00400] mov r0,r0,lsl #8
00008178 [0xe38228ff] orr r2,r2,#0xff0000
0000817c [0xe070c421] rsbs r12,r0,r1,lsr #8
00008180 [0x21a00400] movcs r0,r0,lsl #8
00008184 [0x23822cff] orrcs r2,r2,#0xff00
00008188 [0xe070c221] rsbs r12,r0,r1,lsr #4
0000818c [0x3a00000e] bcc 0x81cc ; (__rt_sdiv + 0x90)
00008190 [0xe270c000] rsbs r12,r0,#0
00008194 [0x2a000383] bcs __rt_div0
00008198 [0x21a00420] movcs r0,r0,lsr #8
0000819c [0xe070c3a1] rsbs r12,r0,r1,lsr #7
000081a0 [0x20411380] subcs r1,r1,r0,lsl #7
000081a4 [0xe0a22002] adc r2,r2,r2
000081a8 [0xe070c321] rsbs r12,r0,r1,lsr #6
000081ac [0x20411300] subcs r1,r1,r0,lsl #6
000081b0 [0xe0a22002] adc r2,r2,r2
000081b4 [0xe070c2a1] rsbs r12,r0,r1,lsr #5
000081b8 [0x20411280] subcs r1,r1,r0,lsl #5
000081bc [0xe0a22002] adc r2,r2,r2
000081c0 [0xe070c221] rsbs r12,r0,r1,lsr #4
000081c4 [0x20411200] subcs r1,r1,r0,lsl #4
000081c8 [0xe0a22002] adc r2,r2,r2
000081cc [0xe070c1a1] rsbs r12,r0,r1,lsr #3
000081d0 [0x20411180] subcs r1,r1,r0,lsl #3
000081d4 [0xe0a22002] adc r2,r2,r2
000081d8 [0xe070c121] rsbs r12,r0,r1,lsr #2
000081dc [0x20411100] subcs r1,r1,r0,lsl #2
000081e0 [0xe0a22002] adc r2,r2,r2
000081e4 [0xe070c0a1] rsbs r12,r0,r1,lsr #1
000081e8 [0x20411080] subcs r1,r1,r0,lsl #1
000081ec [0xe0a22002] adc r2,r2,r2
000081f0 [0xe070c001] rsbs r12,r0,r1
000081f4 [0x20411000] subcs r1,r1,r0
000081f8 [0xe0b22002] adcs r2,r2,r2
000081fc [0x2affffe5] bcs 0x8198 ; (__rt_sdiv + 0x5c)
fishstudio
2005-02-24
打赏
举报
回复
偷懒的做法,把除数取倒数,然后用乘法。
倒数取法应该是个函数。
hudou_k
2005-02-24
打赏
举报
回复
在<<计算机组成原理>>中有袢细的计算过程
ringking007
2005-02-24
打赏
举报
回复
不好意思,漏了个等于
设a,b两个数..现要求a/b,商为c,余数为d
可以这样:
c=0,d=0;
while(a>=b)
{
c++;
a=a-b;
}
d=a;
ringking007
2005-02-24
打赏
举报
回复
设a,b两个数..现要求a/b,商为c,余数为d
可以这样:
c=0,d=0;
while(a>b)
{
c++;
a=a-b;
}
d=a;
ringking007
2005-02-24
打赏
举报
回复
应该用位移吧
0uhuang
2005-02-24
打赏
举报
回复
谢谢各位大侠。
结贴了。
seedundersnow
2005-02-23
打赏
举报
回复
通常用汇编语言做一个函数。
你应当能够得到合适的库的。
seedundersnow
2005-02-23
打赏
举报
回复
比较,如果被除数不小于除数就相减,移位,循环直到最后一个bit。
wabadan
2005-02-23
打赏
举报
回复
有减法来代替除法啊
0uhuang
2005-02-23
打赏
举报
回复
关键是
int a,b;
?a/b 而我又不知道b是多大,要移动几位,还要不要在减去什么数。
头痛ing
EnochShen
2005-02-23
打赏
举报
回复
位移
0uhuang
2005-02-23
打赏
举报
回复
退而求其次:
在C里面如何实现除法运算呢?当然不用 “/”。
0uhuang
2005-02-23
打赏
举报
回复
别人问的
我不懂,只好在CSDN上学了再回去炫耀。
呵呵
计算机用加法乘法
实现
除法运算
的数学原理
本篇只讨论加法乘法
实现
除法的数学原理,并不涉及数据结构有关的知识
FPGA
实现
除法运算
但是如果用硬件来
实现
除法,又是怎么样
实现
的了。 计算机存储的数都是以二进制数来存储的,二进制的除法和我们平常用到十进制除法是一样的。辗转相除法。 计算如上图,从最高位开始计算,如果大于除数,商为1。然后...
c语言中
除法运算
和模运算,C语言除法算法和取模运算的
实现
(多种算法,多种思路)...
例如,ARM 硬件上不支持除法指令,编译器调用 C 库函数来
实现
除法运算
。直接利用 C 库函数中的标准整数除法程序要花费 20~100 个周期,消耗较多资源。在非嵌入式领域,因为 CPU 运算速度快、存储器容量大,所以执行...
ARM
实现
除法运算
。以及Branch to unaligned destination, expect destination to be
byte aligned解决办法
ARMV7 没有除法指令,自己
实现
MOV R2, #0 asm_div_loop CMP R0, R1 ;判断是否除尽 MOVLT R0, R2 ;当R0 (被除数大于除数,则保存累加值) BXLT LR ;当R0 跳出循环返回 SUBS R0, R0, R1 ; R0=R0-R1 ADD R2, R2...
verilog
实现
除法器运算
本文通过verilog
实现
了一个位宽参数可配置的
除法运算
模块
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章