十進制的0.1 爲什麼不能用二進制很好的表示?

二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數爲2,進位規則是“逢二進一”,借位規則是“借一當二”,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用“開”來表示1,“關”來表示0。

補碼計算法定義:非負數的補碼是其原碼本身;負數的補碼是其絕對值的原碼最高位符號位不變,其它位取反,再加1。

 

  正整數轉二進制:  正整數轉成二進制。要點一定一定要記住哈:除二取餘,然後倒序排列,高位補零。

            21 /2    -------------------------------餘  1

            10/2     -------------------------------餘   0

             5/2      ------------------------------- 餘   1

             2/2      --------------------------------餘  0

              1/2     ---------------------------------餘 1

      記住,到着排序  10101  ,驗證下轉成十進制: 1×2的4次方+1×2的2次方+1×2的0次方=16+4+1=21。正確。

      計算機一般是8 位 16位  32位  64 位的,所以不夠位高位補零。8位表示法:00010101

負整數轉二進制:先是將對應的正整數轉換成二進制後,對二進制取反,然後對結果再加一。

     取 -21 演示,看口訣,

         21 的二進制表示爲: 10101

        取反:  01010

        加一 : 01011

  小數轉換爲二進制的方法:對小數點以後的數乘以2,有一個結果吧,取結果的整數部分(不是1就是0嘍),然後再用小數部分再乘以2,再取結果的整數部分……以此類推,直到小數部分爲0或者位數已經夠了就OK了。

     演示: 0.125 ×2=0.25 .......................0

                 0.25×2=0.5.............................0

                 0.5×2=1.0................................1

   即 0.125的二進制表示爲小數部分爲0.001

     記住,乘到小數爲0。排序:正序。

驗證: 0.001        0×2的0次方+0×2的-1次方+0×2的-2次方+0×2的-3次方=1/8=0.125.正確。

   現在來說明0.1轉二進制不能表示的原因啦:

  0.1×2=0.2 .....................0

 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.2×2=0.4.......................0

 .....

 是無限循環的。所以。。。。你懂的!

 

 

  for(double i=0;i!=10;i+=0.1)
{
}

有可能是死循環。用浮點數循環需要注意啦。

參考博文:https://www.cnblogs.com/fandong90/p/5397260.html#undefined

 
————————————————
版權聲明:本文爲CSDN博主「月夜歸醉」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Lixuanshengchao/article/details/82049191

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章