1. 程式人生 > >徹底搞清楚十進位制/二進位制/十六進位制 之間的轉換

徹底搞清楚十進位制/二進位制/十六進位制 之間的轉換

本文旨在說清楚十進位制整數轉換成二進位制用的“除二取餘法”,其他轉換用此舉一反三即可。 核心:十進位制轉換成二進位制關鍵在於確定各個位權上的係數。

  1. 先考慮十進位制本身,如702=7×10^2 + 0×10 + 2×10^0.數字7, 0, 2分別是10^2, 10^1, 10^0 三個位權對應的係數。
  2. 那麼反過來,給定702, 如何獲取各個位權上的數字呢? 答:容易想到:702%10=2; 702/10%10=0; 702/10/10%10=7. 可以命名為“除10取餘法
  3. 所以,同理,給定72如何獲取對應二進位制上各個位權之上的係數呢?答:除2取餘法

至於小數部分怎麼轉換,模仿上述流程。

  1. 對於十進位制,如0.702=7×10^-1+ 0×10^-2 + 2×10^-3.
  2. 反過來,給定0.702怎麼得到各個位權上的數字呢? 0.702×10=7.02 取新晉整數7; 0.702×10^2=70.2取新晉整數0; 0.702×10^3=702取新晉整數2. 到此結束,可以將“完全進化為整數”作為結束的標誌 可以命名為“乘十取整法”。
  3. 同理,將0.75轉換成二進位制小數,應用“乘二取整法”如下: 0.75×2=1.5取新晉整數1; 0.75×2^2 = 3 = 11(B)取新晉整數1. 因為小數已經完全進化為整數。所以到此為止。0.75=0.11(B)
  4. 注意:不是所有十進位制小數都可以轉化為二進位制小數,該結論不是本文討論重點,有興趣的讀者自行了解。