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

📄 qdiv.c

📁 使用移位减法完成32位除法操作。适用于没有除法指令的嵌入式处理器。源码简单
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include   <dos.h> 
typedef struct
{
	int x;
	int y;
}
DivXY;

DivXY QuickDiv(long int DivX,long int DivY)
{
	DivXY XY;
	long int N1;
	int i;
	int AM=0;
	long int R=0;
	int Stopbit;
	if(DivX<0)
	{
	   DivX=-DivX;
	   AM=1;
	}
	N1=DivX;
	for( i = 0;  ; i++)
	{
		if((N1>>i)==0)
			break;
	}
	if(DivY==0)
		i=0;
    Stopbit=i; 
    N1=(1<<Stopbit)-1;
	for( i = 0; i <= Stopbit; i++)
	{
		if(R>=DivY)
		{
			R-=DivY;
			DivX=(DivX<<1)|1;
		}
		else 
			DivX<<=1;
        R=(R<<1)|((DivX>>Stopbit)&0x01);
	}
//	if(R>DivY)  //四舍五入
//		++DivX;
	if(AM)
		XY.x=-(DivX&N1);
	else
		XY.x=DivX&N1;
	XY.y=R>>1;
	return (XY);
}

int main()
{
	int N;
	int i,j;
	int D;

	clock_t start, end; 
   	start = clock(); 
	while(1)
	{
		scanf("%d",&N);
		scanf("%d",&D);
			printf("    %d   %d \n",QuickDiv(N,D).x,QuickDiv(N,D).y);
	}
			end = clock(); 
	printf("\n");
	D=end-start;
	printf("%d\n",D);
	start = clock(); 
	for(i=-300;i<500;++i)
		for(j=100;j<200;j++)
		printf("%d ",i/j);
	end = clock();
	printf("\n");
	N=end-start;
	printf("%d\n",N);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -