科學

2020 年 1 月 19 日

資工計概|數字系統:十進位轉二八十六進位;二八十六進位轉十進位

已複製到剪貼板


|資工計概:學習資料整理文章前言

-尊重智慧財產權

此篇整理文章為本人所撰寫,禁止:轉貼、修改、和商業使用!歡迎分享網址連結!

-互相交流討論

因為此篇整理文章為本人獨自撰寫,如有錯誤的地方,或是對於內容有其他意見,額外補充,都歡迎在下方的留言區一起討論!一起撰寫出完整的計概學習資料!

|各個數字系統換成十進位 Any base to decimal

這是最簡單的轉換方式,只要將各個位置的數字乘上所在的基數(base)再總合就轉換完成了!

例:二進位(Binary)換成十進位(Decimal)

101.01
= 1 × 2² + 0 × 2¹ + 1 × 2⁰ + 0 × 2⁻¹ + 1 × 2⁻²
= 4 + 1 + 0.5 + 0.25
= 5.75

例:十六進位(Hexadecimal)換成十進位(Decimal)

1A.2B
= 1 × 16¹ + 10 × 16⁰ + 2 × 16⁻¹ + 11 × 16⁻²
= 16 + 10 + 0.125 + 0.04296875
= 26.16796875

例:八進位(Octal)換成十進位(Decimal)

20.02
= 2 × 8¹ + 0 × 8⁰ + 0 × 8⁻¹ + 2 × 8⁻²
= 16 + 0.03125
= 16.03125

|十進位換成各個數字系統 Decimal to any base

在做這樣子的轉換時,小數點左邊與右邊的方法不一樣,也就是整數與小數的部分。技巧:整數(左邊)用除;小數(右邊)用乘。

方法(整數部分):

  • 將數值除以基數(base)
  • 商寫於被除數左邊(C 語言中的:/)
  • 餘數寫於被除數下方(C 語言中的:%)
  • 重複以上步驟直到商為零即轉換完成

方法(小數部分):

  • 將數值(小於 1)乘以基數(base)
  • 乘積後的整數部分寫於被乘數下方(如相乘後仍無整數部分就寫零)
  • 乘積後的小數部分寫於被乘數右方
  • 重複以上步驟直到乘積無小數部分即轉換完成(小數部分可能發生「乘積中小數部分永不為零」的狀況,這時就考慮該取到小數點後幾位即可)

例:十進位(Decimal)轉二進位(Binary)

23.13=23(整數部分)+ 0.13(小數部分)

0 1 2 5 11 23
1 0 1 1 1
0.13 0.26 0.52 0.04 0.08 ⋯⋯
1 0 2 4 ⋯⋯

所以:23.13(Decimal)=10111.001 ⋯⋯(Binary)


例:十進位(Decimal)轉八進位(Octal)

23.13 = 23(整數部分)+ 0.13(小數部分)

0 2 23
2 5
0.13 0.04 0.32 0.56 0.48 ⋯⋯
1 0 2 4 ⋯⋯

所以:23.13(Decimal)= 25.1024 ⋯⋯(Octal)

例:十進位(Decimal)轉十六進位(Hexadecimal)

23.13 = 23(整數部分)+ 0.13(小數部分)

0 1 23
1 7
0.13 0.08 0.28 0.48 0.68 ⋯⋯
2 1 4 7 ⋯⋯

所以:23.13(Decimal)= 17.2147 ⋯⋯(Hexadecimal)

|數字位數 Number of digits

在做真正轉換前,我們可以運用「對數 log」來事先知道轉換後(destination system)會有幾位數。(此方法僅適用於十進位轉其他數字系統)

所需位數 = ⌈log 十進位數(source system),以轉換後的數字系統為底(destination system)⌉(⌈⌉代表取大於或等於的最小整數)

例:123(Decimal)

轉 Decimal 需 ⌈log₁₀123⌉ ≑ ⌈2.09⌉ = 3 位
轉 Binary 需 ⌈log₂123⌉ ≑ ⌈6.94⌉  = 7 位
轉 Hexadecimal 需 ⌈log₁₀123⌉ ≑ ⌈1.74⌉ = 2 位

|資工計概相關文章:

分享文章

已複製到剪貼板

主題文章

查看 科學

關於看我所見

「看我所見」主題多元,分享作者的生活經歷、特殊經驗,舉凡:教育、生活、科技、3C、音樂、娛樂 ⋯⋯,我們也將持續優化,提供讀者最好的體驗!


Contacts

Ricky Chuang

看我所見

linktr.ee/5j54d93

最新文章