资源简介
用c模拟浮点数硬件除法 有四舍五入及特殊情况分析
代码片段和文件信息
#include
typedef unsigned short word;
typedef unsigned long dwrd;
dwrd divide(dwrd xdwrd y);
union{
float f;
dwrd i;
}uvwz;
int main()
{
for(;;)
{
scanf(“%f“ &u.f);
scanf(“%f“ &v.f);
printf(“Divident:u:%x\n“u.i);
printf(“Divisor:v:%x\n“v.i);
w.i=divide(u.iv.i);
printf(“fdiv : w:%f\n“w.f);
printf(“fdiv : 0xW:%x\n“w.i);
z.f=u.f/v.f;
printf(“computer: w1:%f\n“z.f);
printf(“computer:0xW1:%x\n“z.i);
printf(“--------- ----------\n“);
}
return 0;
}
dwrd divide(dwrd xdwrd y)
{
dwrd p=0r=0;
dwrd y1nymdc;
int st;
int i=0j=0k=0;
d=( x & 0x80000000)^(y & 0x80000000);
s=x&0x7f800000; //被除数的阶码
t=y&0x7f800000; //除数的阶码
y1=(y|0x800000)<<8; //被除数的尾数处理
y1=y1>>2; //防止数位
评论
共有 条评论