浮点数相加的程序怎样做?(C或者C++)

来源:百度知道 编辑:UC知道 时间:2024/05/30 03:15:55
具体一点
我需要的是: 要体现浮点数相加时计算机所做的运算
1.提取阶码
2.尾数
...
C的代码还不是很熟 (最好用C++的)

提取阶码可以这样,就32位浮点数来说
第31位是符号位,然后跟着8位是阶码,第30位是阶码符号位
符号 阶码 尾数
0 01111110 00000000000000000000000 0.5
0 01111111 00000000000000000000000 1
0 01111111 10000000000000000000000 1.5
0 10000000 00000000000000000000000 2
0 10000000 01000000000000000000000 2.5
0 10000000 10000000000000000000000 3
0 10000000 11000000000000000000000 3.5
0 10000001 00000000000000000000000 4
0 10000001 00100000000000000000000 4.5
#include <iostream.h>
union number
{
float a1;
unsigned int a2;
}Load;
void main()
{
double z,x;
cout<<"请输入第一个数:";
cin>>Load.a1;
double b1,b2,m1,m2,m3;
int k,i,m=1;
b1=Load.a2&2147483648;
if(b1==0)
{
// cout<<b1;
b2=Load.a2&0x7f800000;

m1=b2/8388608; //移位,把高位(30-22)降位到(7-0)
k=m1-126;
cout<<Load.a1<<"的阶码为:"<<k<<endl;
m2=L