1. 题目

二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。

如果该数字不在0和1之间,或者无法精确地用32位以内的二进制表示,则打印“ERROR”。

示例1:输入:0.625输出:"0.101"示例2:输入:0.1输出:"ERROR"提示:0.1无法被二进制准确表示提示:
32位包括输出中的"0."这两位。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bianry-number-to-string-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 浮点数乘以进制2,取整数位添加到 二进制小数位后面
  • 浮点数舍去整数位,重复以上过程直至浮点数变成 0,若无法等于 0,则无法精确表示
class Solution {public:string printBin(double num) {if(num < 0 || num > 1.0)return "ERROR";string ans = "0.";int bits = 2;while(num > 0){num *= 2;//*2 进制数if(num >= 1.0){ans += '1';num -= 1;//舍去整数位}elseans += '0';bits++;if(bits > 32)return "ERROR";}return ans;}
};

另参考:二进制小数 转 10进制

二进制 0.1111\quad 0 \quad . \quad 1 \quad\quad 1 \quad \quad 1 \quad \quad 10.1111


次方 202−12−22−32−4\quad \quad 2^0 \quad \quad 2^{-1} \quad 2^{-2} \quad 2^{-3} \quad 2^{-4}202−12−22−32−4


十进制 0+0.5+0.25+0.125+0.0625=0.9375\quad 0 + 0.5 + 0.25 + 0.125 + 0.0625 = 0.93750+0.5+0.25+0.125+0.0625=0.9375

程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)相关推荐

  1. 程序员面试金典 - 面试题 05.03. 翻转数位(位运算)

    1. 题目 给定一个32位整数 num,你可以将一个数位从0变为1.请编写一个程序,找出你能够获得的最长的一串1的长度. 示例 1: 输入: num = 1775(11011101111) 输出: 8 ...

  2. 程序员面试金典 - 面试题 05.07. 配对交换(位运算)

    1. 题目 配对交换.编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推). 示例1:输入:num = 2(或者0b10)输出 1 (或者 ...

  3. 程序员面试金典 - 面试题 01.02. 判定是否互为字符重排(哈希map)

    1. 题目 给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串. 示例 1: 输入: s1 = "abc", s2 = &qu ...

  4. 程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 动态规划 1. 题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列. 机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍 ...

  5. 程序员面试金典 - 面试题 05.08. 绘制直线(位运算)

    1. 题目 绘制直线.有个单色屏幕存储在一个一维数组中,使得32个连续像素可以存放在一个 int 里. 屏幕宽度为w,且w可被32整除(即一个 int 不会分布在两行上),屏幕高度可由数组长度及屏幕宽 ...

  6. 程序员面试金典 - 面试题 05.04. 下一个数(线性扫描)

    文章目录 1. 题目 2. 解题 2.1 STL 2.2 线性扫描 2.3 位运算 1. 题目 下一个数.给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小) ...

  7. 程序员面试金典 - 面试题 10.02. 变位词组(哈希map)

    1. 题目 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起. 变位词是指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...

  8. 程序员面试金典 - 面试题 16.02. 单词频率(哈希表/Trie树)

    文章目录 1. 题目 2. 解题 2.1 哈希解法 2.2 Trie树 1. 题目 设计一个方法,找出任意指定单词在一本书中的出现频率. 你的实现应该支持如下操作: WordsFrequency(bo ...

  9. 程序员面试金典 - 面试题 05.01. 插入(位运算)

    1. 题目 插入.给定两个32位的整数 N 与 M,以及表示比特位置的 i 与 j. 编写一种方法,将 M 插入 N,使得 M 从 N 的第 j 位开始,到第 i 位结束. 假定从 j 位到 i 位足 ...

最新文章

  1. 总结一下classpath
  2. centos 配置bond_CentOS 网卡配置bond4(LACP)
  3. 支付宝支付 第三集:搭建项目及测试(含代码)
  4. python画曲线图例-Python数据分析-Matplotlib图标绘制
  5. 51nod 1414 冰雕 思路:暴力模拟题
  6. 谈谈 css 的各种居中——读编写高质量代码有感
  7. redis storm mysql_storm-redis 详解
  8. 计组之存储系统:7、Cache替换算法(随机算法RAND、先进先出算法FIFO、近期最少使用LRU、最近不经常使用LFU)
  9. OpenCV-离散傅里叶变换cv::dftcv::idft
  10. C语言分支循环结构1,c语言——运算符、分支结构、循环结构(示例代码)
  11. ASCII码表的应用
  12. ADS学习:谐波分析和参数扫描
  13. 自己整理的几个免费的李炎恢php实战开发教程
  14. js解压gzip(解决RangeError: Maximum call stack size exceeded)
  15. Linux查看日志命令(汇总)
  16. Mybatis事务管理的两种方式
  17. mysql线上问题排查思路及常用命令
  18. 负整数的取模与取整的问题
  19. 怎样开启成功的“数据分析师”职业生涯(R、Python、机器学习、通信和数据可视化、数据直觉)
  20. mysql里any是什么_【MySQL】mysql中any,in,some,all的区别

热门文章

  1. 计算机最佳参数,对使用者来说,学会计算机性能参数提取,给出性能评价很重要...
  2. 集合添加元素python_Python基础:列表、字典、元组、集合、添加和删除元素,增删...
  3. c++远征之继承篇——继承的概念、继承时构造函数/析构函数的先后顺序
  4. python-day3
  5. composer-安装插件包
  6. okHttp源码解析------待续
  7. 关于一些html和css2的知识点
  8. ViewPager+Fragment,Fragment会预加载的问题
  9. 浅析Java内存模型
  10. AutoIt: WinGetClassList可以把当前窗口所有的handle全部列出来