📄 div_cal1.c
字号:
#include <intrins.h>
#include <string.h>
#include <absacc.h>
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/*--------------------------------------------------------------
超长除法(6字节(高位在前,低位在后)/(100的n次方)==4字节)(四舍五入)
入口参数:
buf == 被除数
num == 除num个10
出口参数:
== buf/(100的n次方);
--------------------------------------------------------------*/
ulong odiv(uchar *buf,uchar num)
{
uint dividend;
uchar residue,i;
uchar xdata buf1[6];
ulong result;
i=0;
do
{
buf1[i]=buf[i];
i++;
}while(i!=6);
do
{
*((uchar *)(÷nd)+0)=0; //被除数高位清0
*((uchar *)(÷nd)+1)=buf1[0];
buf1[0]=dividend/100;
i=1;
do
{
residue=dividend%100;
*((uchar *)(÷nd)+0)=residue; //余数作为下次高位
*((uchar *)(÷nd)+1)=buf1[i];
buf1[i]=dividend/100;
i++;
}while(i!=6);
}while(--num);
residue = dividend%100;
*((uchar *)(&result)+3)=buf1[5];
*((uchar *)(&result)+2)=buf1[4];
*((uchar *)(&result)+1)=buf1[3];
*((uchar *)(&result)+0)=buf1[2];
if(residue>49) result++;
return(result);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -