为什么0.1无法被二进制小数精确表示?

这个问题困扰了我不少时间,最近有个比较清晰的认识,和大家分享。

这个问题首先要从数位表示法说起。今天我们看到的123这样的十进制数,是自然而然的理解其意义,但是有没有深究其内在的数学原理呢?

所谓十进制是0~9十个基本符号为基础的一种数字表示法,数位表示法是将一串基本符号从左到右连续排列的一种方法。为什么12时表示一十二,而不是二十一,或者是一加二的意思呢?因为数字所处的位置是有特别意义的,最右边第一个数字符号,代表基本的数0~9,而第二位的意义并不是0~9,而是0*10~9*10。推而广之,百位是x*100,(x是符号),用简练的数学公式就是x*10^k , 个位k是0,十位是1,百位k是2,从右到左一直数下去。123的意思就是1*10^2+2*10^1+3*10^0。

位置,进制,符号这三者的关系就是“123”这种数字表示法内在的数学原理。

那么,0.1 是什么意思?是1*10^-1,向右数数的结果。小数点是为了区分个位的位置在哪里。

一个数要用“数位表示法”表示出来,必然需要能够化为x*10^k的形式,而并不是任意数都能够做到。从数位法小数的定义看可以得知,一个数要能够被表示出来,需要能除尽10,才有若干个x*10^k 的数位组合表示它,否则就是无数个符号才能表示。如1/3这个数除以10等于1/3*1/10 = 0.0333333….循环小数。

究竟哪些数可以用十进制表示哪些不可以?如分母是10的因子和因子的合数,如1,2,5,10,20,50等(整数分母为1,而任意大于1的数的因子都有1和自身,因此整数可以用任意数制精确表示)。

回答题目,为什么0.1无法被二进制小数表示,0.1即1/10这个数要转换成二进制即x*2^k的组合数,必须要除尽2.要注意,2进制只有0,1两个符号,另一个需要注意,二进制被除数右移一位等于*2,而非10进制的*10。

1/10*1/2 = 1/20

1*2*2*2*2 = 32 右移4位

-20 = 12        商1

12*2 = 24 右移1位

-20 = 4       商1

4*2*2*2 =32 右移3位

-20 = 12   商1  可见数字重复了,循环小数无疑

即 0.00011001。

那么2进制能够表示哪些十进制小数,5/10,因为能约成1/2,分母是2的因子。

总结一点,就是位置表示法有其自身的缺陷,并不能在有限的数位,表示众多有理数,这个时候,需要借助分数来帮忙,来避免位置表示法以固定数作分母这个缺点。

如果需要一个可以避免循环小数的数制,不妨试用210进制,因为因子比较多,2*3*5*7 =210.

转载于:https://www.cnblogs.com/Nobel/archive/2013/04/08/3009162.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之圆角矩形

安卓圆角矩形的定义 在drawable文件夹下&#xff0c;定义corner.xml <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android" android:shape"rectangle"> <!-…

”大脑“爆发背后是50年互联网架构重大变革

前言&#xff1a;面对即将到来的2019年&#xff0c;互联网诞生50年&#xff0c;将是诸多纪念活动中重要的一个&#xff0c;经过50年的发展&#xff0c;互联网究竟发生什么重要的变化&#xff0c;通过这篇文章试图进行一次总结&#xff0c;也作为提前向互联网50年的致敬。作者&a…

jwplayer 消除logo

http://www.cnblogs.com/tv151579/archive/2012/05/21/2511065.html 转载于:https://www.cnblogs.com/gaochun413/archive/2013/04/10/3012454.html

动图|帮你一次性搞清楚 40种传感器工作原理

来源&#xff1a;一览众车/东方仿真物联网智库 转载摘要&#xff1a;帮你一次性搞清楚 40种传感器工作原理扩散硅式压力传感器应变加速度感应器压阻式传感器测量液位的工作原理MQN型气敏电阻结构及测量电路气泡式水平仪的工作原理布料张力测量及控制原理直滑式电位器控制气缸活…

Android实现高仿QQ附近的人搜索展示

本文主要实现了高仿QQ附近的人搜索展示&#xff0c;用到了自定义控件的方法 最终效果如下 1.下面展示列表我们可以使用ViewPager来实现&#xff08;当然如果你不觉得麻烦&#xff0c;你也可以用HorizontalScrollView来试试&#xff09; 2.上面的扫描图&#xff0c;肯定是个Vi…

Netty-4-网络编程模式

我们经常听到各种各样的概念——阻塞、非阻塞、同步、异步&#xff0c;这些概念都与我们采用的网络编程模式有关。 例如&#xff0c;如果采用BIO网络编程模式&#xff0c;那么程序就具有阻塞、同步等特质。 诸如此类&#xff0c;不同的网络编程模式具有不同的特点&#xff0c…

POJ-2400 Supervisor, Supervisee 带权值匹配+枚举所有匹配情况

题意&#xff1a;给定两个关系矩阵&#xff0c;分别表示雇主和雇员的相互好感度&#xff0c;好感度为1最优&#xff0c;N最差。如果一个人与好感度为P的人匹配的话&#xff0c;差值为P-1&#xff0c;现在要求是的总共的差值最小的匹配方法&#xff0c;并且输出所有的匹配方案。…

黎曼猜想被证明了?“他的证明甚至不能算是个错误”!阿蒂亚爵士的证明受到同行质疑...

作者&#xff1a;许琦敏 金婉霞编辑&#xff1a;金婉霞责任编辑&#xff1a;李雪林来源&#xff1a;解剖者摘要&#xff1a;德国柏林时间9月24日上午9点45分&#xff0c;菲尔兹奖与阿贝尔奖双料得主、英国皇家学会院士迈克尔阿蒂亚爵士在德国海德堡举行的海德堡奖诺贝尔奖获得者…

Android自定义View

1.View是什么&#xff1f; View是屏幕上的一块矩形区域&#xff0c;它负责用来显示一个区域&#xff0c;并且响应这个区域内的事件。可以说&#xff0c;手机屏幕上的任意一部分看的见得地方都是View&#xff0c;它很常见&#xff0c;比如 TextView 、ImageView 、Button以及Li…

【IT笔试面试题整理】判断链表是否存在环路,并找出回路起点

【试题描述】定义一个函数&#xff0c;输入一个链表&#xff0c;判断链表是否存在环路&#xff0c;并找出回路起点 Circular linked list: A (corrupt) linked list in which a node’s next pointer points to an earlier node, so as to make a loop in the linked listEXAMP…

腾讯机器人实验室首曝光 攻坚“通用人工智能”

来源&#xff1a;新浪科技摘要&#xff1a;与当初的“互联网”一样&#xff0c;“AI”正成为各行各业的标配。在近日召开的2018 世界人工智能大会上&#xff0c;腾讯董事会主席兼首席执行官马化腾提出&#xff0c;人工智能技术是一场跨国、跨学科的科学探索工程&#xff0c;对于…

Android之canvas详解

首先说一下canvas类&#xff1a; Class Overview The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e…

【水】uva10037 过桥

给出n个人所需过桥的时间&#xff0c;每次最多两人过桥&#xff0c;过桥时间为最长的人的时间。求最快所有人全部过桥方案。 贪心。先从小到大排&#xff0c;易知 n1 时 ansa[1] n2,ansmax(a[1],a[2]) n3,ansa[1]a[2]a[3] 初始化F[1、2、3],记F[n]&#xff08;n>4&#xff0…

下一代动力电池深度报告,三大技术路线谁能笑到最后?【附下载】| 智东西内参...

来源&#xff1a;智东西编辑&#xff1a;智东西内参摘要&#xff1a;随着全球电动车浪潮席卷&#xff0c;关于固态电池的新闻越来越多。从 Fisker 宣称开发充电 1 分钟行驶 500 公里的固态电池&#xff0c;到宝马已与 SolidPower 进行合作开发下一代电动车用固态电池&#xff0…

Android之shape属性详解

有时候 &#xff0c;为了满足一些需求&#xff0c;我们要用到 shape 去定义 一些背景&#xff0c;shape 的用法 跟图片一样 &#xff0c;可以给View设置 Android:background”drawable/shape”, 定义的shape 文件&#xff0c;放在 res/shape 目录下 通常我们可以用shape 做 bu…

S3C6410移植u-boot-2010.3(2)基本的启动信息修改

1、启动模块修改 进入/cpu/arm1176/目录&#xff0c;修改start.S文件 首先找到需要修改的CONFIG_NAND_SPL汇编原码&#xff0c;修改如下&#xff1a; #ifndef CONFIG_NAND_SPL /** flush v4 I/D caches*/ mov r0, #0 mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */ mcr p1…

[修订版]”大脑“爆发背后是50年互联网架构重大变革

前言&#xff1a;面对即将到来的2019年&#xff0c;互联网诞生50年将是诸多纪念活动中重要的一个&#xff0c;经过50年的发展&#xff0c;互联网究竟发生什么重要的变化&#xff0c;通过这篇文章试图进行一次总结&#xff0c;也提前向互联网50年致敬。作者&#xff1a;刘锋 互…

Android之自定义ViewGroup

概述 在写代码之前&#xff0c;我必须得问几个问题&#xff1a; 1、ViewGroup的职责是啥&#xff1f; ViewGroup相当于一个放置View的容器&#xff0c;并且我们在写布局xml的时候&#xff0c;会告诉容器&#xff08;凡是以layout为开头的属性&#xff0c;都是为用于告诉容器…

C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.NET4中的使用

C# 5.0 给我们带来了三个非常有用的编译器特性 CallerMemberName CallerFilePath CallerLineNumber 在C与C中由下列字符帮助我们实现调试消息的文件行号 01.#define debug_msg printf("%s[%d]:",__FILE__,__LINE__);printf 在.NET 4中与其功能相等的是 new StackTrac…

智慧城市建设:科技创业的下一个浪潮

来源&#xff1a;资本实验室随着全球城市化进程的加速&#xff0c;越来越多的人涌进城市&#xff0c;这为城市建设带来了一系列的挑战&#xff1a;一方面&#xff0c;城市需要面对大量的越来越老化的基础设施&#xff1b;另一方面&#xff0c;需要为新涌入的城市居民提供新的&a…