民科吧 关注:366,725贴子:4,879,777

回复:小学生也可以证明0.999……=1

只看楼主收藏回复

移位必须有一个框架长度,而不是你以为的无空间性乱移,好好去理解计算机里的32位64位吧计算机里移位是怎么对末尾处理的,你的小数乘以10移位小数点是否有对实现“位”的一致性而对尾部有处理?


IP属地:广东来自Android客户端16楼2024-02-08 22:27
回复
    一个谈移位却不知道“位”这个概念的重要性


    IP属地:广东来自Android客户端17楼2024-02-08 22:29
    回复
      0.1234×10,移位的结果不是1.234,而是1.2340。00110011的左移一位是01100110。移位请保留“位”的一致性,兄弟!


      IP属地:广东来自Android客户端18楼2024-02-08 22:33
      收起回复
        移位必须对移出的补0,这种常识性的东西,我是绝对不会忘记的。而不会干出0.99…×10=9.99…这种移位竟然对移出的位补9的蠢事。


        IP属地:广东来自Android客户端19楼2024-02-09 00:01
        回复
          0.99…×10=9.99…的错误,我曾经用希尔伯特旅馆悖论给别人详细讲过。假定小数点是旅馆大门出口,每一位小数位就是一个房间,十分位为1号房间,以此类推,“9”这个数字就代表一个人,0.99…就代表这个希尔伯特旅馆已经每个房间都住满了人。


          IP属地:广东来自Android客户端21楼2024-02-09 00:35
          回复
            第一天,1号房间客人退房,于是我安排了2号房间客人搬到1号房间,3号房间客人搬到2号房间,…,n+1号房间客人搬到n号房间,我竟然发现我的旅店又住满了客人,我的心里美滋滋的。第二天,又是1号房间客人退房,我这旅店老板又是如此这般一番折腾。太好了,我不需要招租了,我也不怕退租了,我的旅馆永远都是满满当当的。上帝,你看我多聪明。


            IP属地:广东来自Android客户端22楼2024-02-09 00:44
            回复
              0.99…×10=9.99…,整数9退房走了,我的旅馆还是0.99…,继续0.99…×10=9.99…,整数9继续退房走了,嗯,依然是0.99…,欢迎退房,反正我的旅馆永远不会存在空房间。


              IP属地:广东来自Android客户端23楼2024-02-09 00:54
              回复
                计算机每一个byte非0即1,没有空白不写这种状况不是你想省略就省略得了的事。来吧,告诉俺,mov eax 100,mov ecx 3,xor edx edx,idiv ecx,shl edx 1,这一段计算机汇编后edx存储的是数是十进制的哪个实数


                IP属地:广东来自Android客户端24楼2024-02-09 15:25
                收起回复
                  要不要我给你真实的讲一讲定点数、双精度和单精度浮点数计算机是怎么存储的?


                  IP属地:广东来自Android客户端29楼2024-02-09 17:15
                  回复
                    -2.5的单精度浮点数,即-10.1。□ □□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□,1+8+23(偏移127)即32位单精度浮点数,10.1=1.01×10¹,符号位置入左边第一位,即-存入1,阶存在接下来的八位,指数1+偏移127=128化二进制10000000,小数尾01存入后面23位(其余补0)。因此单精度浮点数-2.5计算机存的是1100 0000 0010 0000 0000 0000 0000 0000。至于双精度1+11+52(偏移1023)罢了,-2.5的双精度浮点数为1100 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000,64位的双精度浮点数。


                    IP属地:广东来自Android客户端31楼2024-02-09 18:09
                    回复
                      来,108猫,给我科普一下计算机怎么定点数储存-2.5的?


                      IP属地:广东来自Android客户端32楼2024-02-09 18:12
                      回复
                        @汤姆猫108 兄:
                        (续18楼层内)
                        我感到,@tarbon 兄的问题或许并不在于多此一举绕弯,而在于多此一举的绕弯时,绕出了一个错误概念。如果他不绕弯,按照简单的直接证明乘以10的操作步骤来证明,或许它会暴露出另外一个错误。
                        不妨把问题分解一下,请猫兄看看看看是不是这么回事。
                        我说过,要证明移位法的正确性,不经过转化为整数这种多此一举,更清楚,更简单。只可惜是百度界面不支持公式编译器,完整的证明形式无法打出。所以这里采用具体例子来说明道理。照此改写成正规的证明并不难。
                        例如:23.456乘以10,先写出按照十进小数规则23.456的值:
                        2 × 10^1 + 3 × 10^0 + 4 × 10^(-1) + 5 × 10^(-2) + 6 × 10^(-3)
                        乘以10,按乘法分配律,可以每项同乘,也就是把每项中因子10的指数增1,得:
                        2 × 10^2 + 3 × 10^1 + 4 × 10^0 + 5 × 10^(-1) + 6 × 10^(-2)
                        于是,按照十进小数规则,这就是:234.56 !
                        很简单。何来必须抹一个零的步骤?
                        (待续)


                        IP属地:陕西33楼2024-02-10 17:01
                        收起回复
                          (续)
                          然后,作为对比,按照您11楼归纳的他的四步来做,写出如下:
                          (1)先将被乘数小数点去掉,看成整数;即将23.456化为23456 × 0.001,即
                          【2 × 10^4 + 3 × 10^3 + 4 × 10^2 + 5 × 10^1 + 6 × 10^0 】 × 0.001, (A式)
                          (2)再乘以10,即每项中因子10的指数增1,得:
                          【2 × 10^5 + 3 × 10^4 + 4 × 10^3 + 5 × 10^2 + 6 × 10^1 】 × 0.001, (B式)
                          (3)再按照原被乘数的小数位数写上小数点;也就等于把后面的 × 0.001乘进去把【】展开。即
                          2 × 10^2 + 3 × 10^1 + 4 × 10^0 + 5 × 10^(-1) + 6 × 10^(-2) ; (C式)
                          已经得出结果234.56了。那么,还要第(4)步干什么?
                          (待续)


                          IP属地:陕西34楼2024-02-10 17:57
                          回复
                            (续)
                            不过,我们回看一下11楼的(2),有一句:(即将该整数末尾添一个0),
                            也就是在(B式)中添了一个零项,
                            【2 × 10^5 + 3 × 10^4 + 4 × 10^3 + 5 × 10^2 + 6 × 10^1 + 0 × 10^0】 × 0.001, (B式)
                            但是从数学上,你能说不加零就错吗?
                            整数形式下这个0需要写出来,仅仅是因为他到了小数点的左边,不再是“空白位”了而已。
                            它第(4)步抹掉的0,就是来源于这里写上的0。
                            但是请想想,从数学道理上讲,这个0从何而来?
                            回头看看,原数到此,已经经历了先乘以1000,再乘以十,那么,这里的个位本应该等于原数的万分位不是吗?
                            所以,这一位写出0,根本的理由是:
                            原数23.456的万分位本来就是0!
                            如果原数的万分位不是0,乘以1000,再乘以十以后的个位不会是零。
                            (待续)


                            IP属地:陕西35楼2024-02-10 18:12
                            回复
                              (续)
                              综上所述,对有限小数,遵照11楼的4步(中间转换为整数)来做乘以10的乘法时,之所以会出现第(4)步,
                              根本的原因是:
                              有限小数本来就存在着最低位之后的无穷多个“空白位”,而这些空白位本来就是零。
                              而无限小数,本来就不存在“最低位”,更没有空白位,当然就没有这个问题了。
                              所以,我猜想,这位@tarbon 兄的错误根源可能是:
                              他误以为:无穷小数可能存在着“第∞+1”位、“第∞+2” 位“、……都是零。
                              不知我这个才像是否猜对了,请这位兄和各位兄指教。


                              IP属地:陕西36楼2024-02-10 18:28
                              收起回复