C++学习随笔4 输出long double型数12345.67891023456的二进制位码

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
long double d=12345.67891023456;
cout<<fixed<<setprecision(11)<<d<<"\n";
//双精度数据在计算机中也是二进制数据,求二进制码位就是将双精度数据转换成字节流,按字节求每个bit位。
char*p=(char*)&d;
//因为数据在计算机中存储是分大小端方式(大端:最高有效位在前,最低有效位在后;小端:则相反,这里按大端处理),所以i/j --     
//双精度数据占10个字节,所以i从9到0。
for(int i=9;i>=0;--i){
char c=p[i];
//一个字节是8位,所以j从7到0
for(int j=7;j>=0;--j)
cout<<(c>>j&1);
cout<<(i%5==0?"\n":",");
} 
return 0;
}

 

posted @ 2016-11-25 16:11  etcjd  阅读(265)  评论(0)    收藏  举报