您的位置:首页 > 其它

以二进制方式输出数字在内存中的存储形式

2008-11-27 21:30 330 查看
对于二进制表示的float类型的2.5,其在内存中的表示为01000000 00100000 00000000 00000000,如果我们想打印出它在内存中是如何表示的,那么我们可以用1进行移位,与每个比特进行与运算,还是看看代码吧:

对于输入参数,在visual studio下可以点击项目->属性->配置属性->调试->命令参数进行输入,在visual c++6.0可以点击工程->设置->调试->程序变量里输入。输入2.5打印看看,其结果与我们预期相同。

#include <cstdlib>
#include <iostream>
using namespace std;

void printBinary(const unsigned char val)
{
for (int i = 7;i>=0;i--)
if(val&(1<<i))
cout<<"1";
else
cout<<"0";
}

int main(int argc,char** argv)
{
if (argc!=2)
{
cout<<"Provide a number"<<endl;
exit(0);
}
float d = (float)atof(argv[1]);
unsigned char* cp = (unsigned char*)(&d);
for (int i = 0; i<sizeof(float); i++)
{
printBinary(cp[sizeof(float)-1-i]);
cout<<" ";
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: