实型数在内存里存储的2进制码
来源:互联网 发布:安卓数据恢复破解版apk 编辑:程序博客网 时间:2024/05/13 13:54
/*
时间:2011年10月9日17:04:25
功能:输入一个float型数,输出其在内存中存储的2进制码
备注:输入0时的输出状态不对
*/
# include <stdio.h>
int main()
{
float x;
int i;
int e;
int a[32];
printf("输入浮点数:\n");
scanf("%f",&x);
if (x>=0.0) //符号位表示浮点数的正负
{
a[0]=0;
}
else
{
a[0]=1;
x = -x;
}
if (x<=1.0)
{
for(e=0; e>-128; --e) //规定尾数必须是一个大于1小于2的小数(比如1.25)
{
if(x>=1.0 && x<2.0)
{
break;
}
x *= 2.0;
}
}
else
{
for(e=0; e<128; ++e)
{
if(x>=1.0 && x<2.0)
{
break;
}
x /=2.0;
}
}
x -= 1.0; //这样的话系统默认有一个1,因此只需要存储后面的0.25(1就不需要存储了),0.25用二进制表示是0.01,再去掉(0.)就成为01。
for (i=9; i<32; ++i)
{
x *= 2.0;
if(x>=1.0)
{
a[i]=1;
x -= 1.0;
}
else
{
a[i]=0;
}
}
if(e>0) //如果指数为0,则用01111 1111表示(即10进制的127,在此基础上加或减),比如1用1000 0000表示,-1用0111 1110表示。依此类推。
{
e = e-1;
a[1]=1;
}
else
{
e = e+127;
a[1]=0;
}
for (i=8; i>1; --i)
{
a[i] = e%2;
e = e/2;
}
printf("SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM\n"); //S表示符号位,X表示阶数,M表示尾数
for (i=0; i<32; ++i)
{
printf("%d",a[i]);
if (3==i%4)
{
printf("");
}
}
printf("\n");
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
输入浮点数:
2.0
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0100 0000 0000 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
-2.0
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
1100 0000 0000 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
1
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0011 1111 1000 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
0.75
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0011 1111 0100 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
2.5
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0100 0000 0010 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
0.1
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0011 1101 1100 1100 1100 1100 1100 1101
Press any key to continue
输入浮点数:
0
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0000 0000 -1000 0000 0000 0000 0000 0000
Press any key to continue
————————————
*/
时间:2011年10月9日17:04:25
功能:输入一个float型数,输出其在内存中存储的2进制码
备注:输入0时的输出状态不对
*/
# include <stdio.h>
int main()
{
float x;
int i;
int e;
int a[32];
printf("输入浮点数:\n");
scanf("%f",&x);
if (x>=0.0) //符号位表示浮点数的正负
{
a[0]=0;
}
else
{
a[0]=1;
x = -x;
}
if (x<=1.0)
{
for(e=0; e>-128; --e) //规定尾数必须是一个大于1小于2的小数(比如1.25)
{
if(x>=1.0 && x<2.0)
{
break;
}
x *= 2.0;
}
}
else
{
for(e=0; e<128; ++e)
{
if(x>=1.0 && x<2.0)
{
break;
}
x /=2.0;
}
}
x -= 1.0; //这样的话系统默认有一个1,因此只需要存储后面的0.25(1就不需要存储了),0.25用二进制表示是0.01,再去掉(0.)就成为01。
for (i=9; i<32; ++i)
{
x *= 2.0;
if(x>=1.0)
{
a[i]=1;
x -= 1.0;
}
else
{
a[i]=0;
}
}
if(e>0) //如果指数为0,则用01111 1111表示(即10进制的127,在此基础上加或减),比如1用1000 0000表示,-1用0111 1110表示。依此类推。
{
e = e-1;
a[1]=1;
}
else
{
e = e+127;
a[1]=0;
}
for (i=8; i>1; --i)
{
a[i] = e%2;
e = e/2;
}
printf("SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM\n"); //S表示符号位,X表示阶数,M表示尾数
for (i=0; i<32; ++i)
{
printf("%d",a[i]);
if (3==i%4)
{
printf("");
}
}
printf("\n");
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
输入浮点数:
2.0
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0100 0000 0000 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
-2.0
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
1100 0000 0000 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
1
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0011 1111 1000 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
0.75
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0011 1111 0100 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
2.5
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0100 0000 0010 0000 0000 0000 0000 0000
Press any key to continue
输入浮点数:
0.1
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0011 1101 1100 1100 1100 1100 1100 1101
Press any key to continue
输入浮点数:
0
SXXX XXXX XMMM MMMM MMMM MMMM MMMM MMMM
0000 0000 -1000 0000 0000 0000 0000 0000
Press any key to continue
————————————
*/
- 实型数在内存里存储的2进制码
- C/C++的浮点数在内存中的存储方式
- 浮点数类型在内存之中的存储方式
- 实型变量在内存中的存放形式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储形式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储
- 浮点数在内存中的存储格式
- 浮点数在内存中的存储方式
- 浮点数在内存中的存储格式 .
- 十月份景城网工作重点由数据填充转为网络推广:迅速增加外链 如何有效的做SEO外链 大量优质外链
- linuxUDA134X ASoc板驱动
- 利用google directions api计算距离
- Linux经典书籍下载
- linuxmini2440I2S驱动
- 实型数在内存里存储的2进制码
- USB UDC与gadget驱动
- ASP.ENT创建带事件的用户控件
- intel 指令格式
- solving problem about that dll is missing
- USB设备主机侧驱动
- 使用jspSmartUpload组件进行文件上传、下载
- A001 arduino MEGA 1280 在ubuntu10.04中的环境搭建
- 关于mini2440GPIO的描述