打印
[STM32F4]

如何通过一次除法,同时获得余数和商?

[复制链接]
467|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenho|  楼主 | 2019-11-16 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何通过一次除法,同时获得余数和商?
stm32系列芯片、IAR环境


#include <stdlib.h>
div_t  x;
x=div(A,B);
C = x.quot;
D = x.rem;
这个函数倒是可以做到,但是这样我就没办法四舍五入了。

使用特权

评论回复
沙发
ousj| | 2019-11-16 13:42 | 只看该作者

一次除法?除不完怎么办?
期待实现方法

使用特权

评论回复
板凳
stly| | 2019-11-16 13:46 | 只看该作者
网上搜的,不知道对不对
#include <stdio.h>


// dividend, divisor, quotient and remainder should be replaced with variables instead of constant number
#define GET_DIV_AND_MOD(dividend, divisor, quotient, remainder)        \
__asm{        \
__asm push eax        \
__asm push edx        \
__asm mov eax, dword ptr[dividend]        \
__asm cdq        \
__asm idiv dword ptr[divisor]        \
__asm mov dword ptr[quotient], eax        \
__asm mov dword ptr[remainder], edx        \
__asm pop edx        \
__asm pop eax        \
}


void main(void)
{
int a = 9, b = 4;

int quo=0, rem=0;

//GET_DIV_AND_MOD(a, b, quo, rem);

quo = a / b;

GET_DIV_AND_MOD(a, b, quo, rem);

         printf("The quo is: %d, and the rem is: %d\n", quo, rem);
}

使用特权

评论回复
地板
llljh| | 2019-11-16 13:53 | 只看该作者
自己写个子程序好了;

使用特权

评论回复
5
stly| | 2019-11-16 13:57 | 只看该作者
不是有成品函数吗

使用特权

评论回复
6
keaibukelian| | 2019-12-10 12:14 | 只看该作者
别用除法  太慢了

使用特权

评论回复
7
wangjiahao88| | 2019-12-10 12:33 | 只看该作者
感觉不太好做。都是分两步做的。

使用特权

评论回复
8
wangjiahao88| | 2019-12-10 12:34 | 只看该作者
或者用硬件乘法器。做出来之后,进行数据分离!

使用特权

评论回复
9
wangjiahao88| | 2019-12-10 12:34 | 只看该作者
你这是要做什么?是要做鉴相吗?

使用特权

评论回复
10
heimaojingzhang| | 2019-12-10 12:49 | 只看该作者
用左右移位就行

使用特权

评论回复
11
guanjiaer| | 2019-12-10 12:55 | 只看该作者
太耗费资源了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝