⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 div_cal1.c

📁 在需要计算的设计中
💻 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 *)(&dividend)+0)=0;	//被除数高位清0
		*((uchar *)(&dividend)+1)=buf1[0];
		buf1[0]=dividend/100;
		i=1;
		do
		{
			residue=dividend%100;
			*((uchar *)(&dividend)+0)=residue;	//余数作为下次高位
			*((uchar *)(&dividend)+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 + -