1.5 二进制表示浮点数

Chapter1: 位运算的奇技淫巧

5. 二进制表示浮点数

问题

给定一个介于0和1之间的实数(如0.625),类型为double,打印它的二进制表示(0.101,因为小数点后的二进制分别表示2^(-1), 2^(-2), 2^(-3)...)

如果该数字无法精确地用32位以内的二进制表示,则打印"ERROR"

算法

感觉这题跟位运算关系不大,就是按照用二进制表示浮点数的算法,用字符串拼接的方法进行编程

思路:将该浮点数 *2 得到一个新的数 num,如果 num > 1 则在0. 后拼接上1, 否则拼接上 0, 循环直至 num==0

string binaryDouble(double num){
    string s="0.";//#include
    while(num!=0){
        num*=2;
        if(num>=1){
            s+="1";
            num-=1;
        }
        else{
            s+="0";
        }
        if(s.length()==34){
            return "ERROR";
        }
    }
    
    return s;
    
}

参考资料

[1] 二进制表示浮点数

[2] C++字符串

你可能感兴趣的:(1.5 二进制表示浮点数)