字符串面试题 05.02. 二进制数转字符串

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串面试题 05.02. 二进制数转字符串相关的知识,希望对你有一定的参考价值。

题目:

技术图片

 

 

 

解答:

根据常规十进制小数转二进制小数的方法进行转化;十进制的小数转换为二进制,主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0。

例如:十进制的0.125,要转换为二进制的小数。

(1)0.125 x 2 = 0.25 ==> 0

(2)0.25 x 2 = 0.5 ==> 0

(3)0.5 x 2 = 1 ==> 1,这时小数点后的数均为0,结束循环;

(4)结果为:0.001

技术图片

 

 

 

 1 class Solution {
 2 public:
 3     string printBin(double num) 
 4     {
 5         string res = "0.";
 6 
 7         // 若 "0." 计为两位,i 初始化为 30,若计为 1 位,初始化为 31
 8         int i = 30; 
 9 
10         while (num > 0 && i--) 
11         {
12             num *= 2;
13             if (num >= 1) 
14             {
15                 res.push_back(1);
16                 --num;
17             }
18             else 
19             {
20                 res.push_back(0);
21             }
22         }
23         return num != 0 ? "ERROR" : res;
24     }
25 };

 

以上是关于字符串面试题 05.02. 二进制数转字符串的主要内容,如果未能解决你的问题,请参考以下文章

字符串面试题 05.02. 二进制数转字符串

#yyds干货盘点# LeetCode程序员面试金典:二进制数转字符串

每天两题04

c_cpp [十进制数转罗马数字]将一个十进制数字符串转换为罗马数字字符串#字符串处理

面试题

python面试的100题(21)