博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十进制小数转换成二进制的原理理解
阅读量:3703 次
发布时间:2019-05-21

本文共 737 字,大约阅读时间需要 2 分钟。

  • 1.2k
  •  

4

 

 

发布于 2018-03-08  约 2 分钟

十进制小数转换成二进制的原理理解

在学习浮点数据类型的时候,涉及到了10进制的小数如何转成2进制数的问题(此文章不讨论精度问题,仅涉及转换原理--乘2取整).学习到的方法是“乘2取整“,但是一直不知道具体原理是什么,现在从数学上说明一下原理

乘2取整的操作方法

将十进制的小数部分乘2,将所得结果的整数位作为二进制的位。舍弃乘2所得结果的整数部分,如果剩余部分为0,计算结束。否则继续乘2,进行取整操作(所得整数位继续向右添加)。(如果出现循环,则终止计算,写成循环小数格式,或根据精度位数要求,保留结果位数,停止计算)
举例说明:十进制数:0.251. 0.25 x 2 = 0.5 二进制数 : 0.02. 0.5 x 2 = 1.0 二进制数 : 0.01结果二进制数: 0.01

原理解释

十进制数的小数部分 M 对应二进制部分应为 A1 * 2^(-1) + A2 * 2^(-2) + ... + An * 2^(-n) 其中An 为 0 或 1

现在将 M 乘 2 :M * 2 = A1 * 2^0 + A2 * 2^-1 + ... + An * 2^(1-n)

此时,A1 * 2^0 = A1 即为 M * 2的整数部分的值 求出了A1.

然后舍弃M * 2 的整数部分,即舍弃了 A1. M * 2 - A1 = A2 * 2^-1 + ... + An * 2^(1-n)

最后不断重复这一计算方式,直到乘2所得的结果小数部分为0(或者达到要求精度的位数)为止,二进制小数即为: 0.A1A2..Am (为0时m=n,否则根据精度要求决定m大小)

阅读 7.3k发布于 2018-03-08

转载地址:http://tdscn.baihongyu.com/

你可能感兴趣的文章
IDEA中,实体类实现Serializable,未给出自动生成serialVersionUID提示
查看>>
解决SpringBoot前端jsp、html页面无法加载css、js等文件的问题
查看>>
什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?
查看>>
(栈的应用)中序表达式转换成后序表达式问题
查看>>
KMP算法中next数组及改进的kmp算法nextval数组的手工计算方法
查看>>
[by暴走的山交君][剑指offer系列] 03 数组中重复的数字
查看>>
[by暴走的山交君][剑指Offer系列] 05 替换空格
查看>>
[by暴走的山交君][剑指Offer系列] 52 两个链表的第一个公共节点
查看>>
[by暴走的山交君][剑指Offer系列] 53 - I 在排序数组中查找数字
查看>>
折半查找判定数及平均查找长度(一定要看这 能看懂的)
查看>>
下列二叉树中,可能成为折半查找判定树(不含外部结点)的是()向上/下取整
查看>>
[by暴走的山交君]B树、B+树详解
查看>>
[剑指Offer系列] 53 - II. 0~n-1中缺失的数字
查看>>
广义表中 GetHead() 和 GetTail()
查看>>
面试问题: 三次握手和四次挥手的理解?
查看>>
Java中==和equals的区别<深度理解> (转载)
查看>>
关于==和equals的区别和联系,面试这么回答就可以(转载)
查看>>
漫画 | 什么是 HashMap?
查看>>
计算机网络面试题整理
查看>>
Java知识体系最强总结(2020版) 传送门
查看>>