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; }

浙公网安备 33010602011771号