小数 二进制 的 表示与转换
2016-03-04 16:42
363 查看
1. 小数用二进制如何表示
首先,给出一个任意实数,整数部分用普通的二进制便可以表示,这里只说小数部分如何表示例如0.6
文字描述该过程如下:将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,知道小数部分为0。
特殊情况: 小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编程语言中表示小数会出现误差的原因
下面我们具体计算一下0.6的小数表示过程
0.6 * 2 = 1.2 ——————- 1
0.2 * 2 = 0.4 ——————- 0
0.4 * 2 = 0.8 ——————- 0
0.8 * 2 = 1.6 ——————- 1
0.6 * 2 = 1.2 ——————- 1
…………
我们可以发现在该计算中已经出现了循环,0.6用二进制表示为 1001 1001 1001 1001 ……
如果是10.6,那个10.6的完整二进制表示为 1010.100110011001……
2. 二进制表示的小数如何转换为十进制
其实这个问题很简单,我们再拿0.6的二进制表示举例:1001 1001 1001 1001文字描述:从左到右,v[i] * 2^( - i ), i 为从左到右的index,v[i]为该位的值,直接看例子,很直接的
0.6 = 1 * 2^-1 + 0 * 2^-2 + 0 * 2^-3 + 1 * 2^-4 + ……
懂了吧!
相关文章推荐
- 微信扫描打开APP下载链接提示代码优化(转)
- CSS3 用户界面
- FZU 2086 餐厅点餐
- Python多线程爬虫简单示例
- yum安装mysql
- Android学习笔记----Activity的三个小的技巧
- win7下面VM VirtualBox中linux CenOS 网络的配置
- Spring 实战4 第一部分 Spring核心
- tomcat配置server.xml后,重启被重置问题
- 微信SDK使用说明
- 程序员与创业公司的那些事儿-----写在离职当天
- iOS开发之静态库-基本概念
- hdu2544 最短路 Dijstra算法堆优化,Bellman-Ford,Bellman-Ford队列优化
- ART、JIT、AOT、Dalvik之间有什么关系?
- Leet Code OJ 66. Plus One [Difficulty: Easy]
- 获取url的hash值
- CSS3 多列
- CSS3 动画
- FZU 2088 最长队名
- 一个关于rm -rf 的教训