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

对于二进制表示的float类型的2.5,其在内存中的表示为01000000  00100000  00000000  00000000,如果我们想打印出它在内存中是如何表示的,那么我们可以用1进行移位,与每个比特进行与运算,还是看看代码吧: 
对于输入参数,在visual studio下可以点击项目->属性->配置属性->调试->命令参数进行输入,在visual c++6.0可以点击工程->设置->调试->程序变量里输入。输入2.5打印看看,其结果与我们预期相同。

 

复制代码
#include <cstdlib> 
#include <iostream>
usingnamespace 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<<"";
}
return0;
}
复制代码

 

---
可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明
 

转载于:https://www.cnblogs.com/10jschen/archive/2012/08/31/2665918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值