進制簡介 一文中,簡單的介紹了 進制 的概念,
進制的轉換 讓我們能用熟悉的 十進制 (Decimal) 或 十六進制 (Hex)…,
而不用背長串的 『10010100001111…』,
也有利於我們了解 演算法、計算機組織、組合語言…,以增進程式效率 😆。
2018/06/24 新增簡易 進制轉換器:
See the Pen Number System Convetor by JS-Zheng (@JS-Zheng) on CodePen.
目錄
十進制的轉換
十進制 (Decimal) 的轉換,只需記得兩招:
- 指數加權法 — 其他進制 轉換為 十進制
- 餘數乘積法 — 十進制 轉換為 其他進制
指數加權法
任何數字,皆可藉由 『 數 (d) * 基底 i』的多項式來表達,
例: 十進位 (以 10 為基底) 的 9527 ,
即可表示成: 9 * 103 + 5 * 102 + 2 * 101 + 7 * 100。
指數加權法,即是利用此概念,
將 其他進制 轉換為 十進制。
「例一」
二進制的 101.112,透過 指數加權法 轉換為 十進制:
「例二」
十六進制的 1234.56716,透過 指數加權法 轉換為 十進制:
餘數乘積法
餘數乘積法,用於將 十進制 轉換為 其他進制,透過:
一、分離 『整數』、『小數』部分。
二、『整數』部分:
不斷除以 目標進制基底,直到商數為 0,並 反向 取出『餘數』。
三、『小數』部分:
不斷乘以 「目標進制基底,取出乘積小數部分」,
直到乘積小數部分為 0,並 正向 取出『乘積』整數部分。
四、最後,將兩者合併!
以 87.12510 轉換為 二進制為例:
1. 首先,將整數、小數分離,可分別得到 87、0.125:
2. 『整數』部分:
不斷除以 目標進制基底 2,直到商數為 0,並 反向 取出『餘數』,
得到 『 1 0 1 0 1 1 1 』:
3. 『小數』部分:
不斷乘以 「目標進制基底,取出乘積小數部分」,直到乘積小數部分為 0。
步驟:
乘以 目標進制基底 2,取出乘積小數部分 0.25,
乘以 目標進制基底 2,取出乘積小數部分 0.5,
乘以 目標進制基底 2,取出乘積小數部分 0.0。
正向取出 『乘積』整數部分,
得到『 0 0 1 』:
4. 最後,將兩者合併!
整數部分:『 1 0 1 0 1 1 1 』
小數部分:『 0 0 1 』
87.12510 = ( 1 0 1 0 1 1 1 . 0 0 1)2 !
二、八、十六進制的轉換
二、八、十六進制之間的轉換非常簡單,
不論是『二 到 十六』還是『十六 到 二』,都可利用 查表法 !
二進制 轉 八進制、十六進制
1. 欲轉為 八進制時 3 個 bit 為一組 ( 8 = 23),
欲轉為 十六進制時 4 個 bit 為一組 ( 16 = 24 )。
2.『整數』部分: 由右往左 (←) 分組,不足補 0 ;
『小數』部分: 由左往右 (→) 分組,不足補 0。
3. 根據分組查表。
進制轉換表:
以 1010111.0012 轉換為 八進制為例:
1. 欲轉為 八進制時 3 個 bit 為一組。
2.『整數』部分: 由右往左 (←) 分組,不足補 0 ;
『小數』部分: 由左往右 (→) 分組,不足補 0。
3. 根據分組查表:
『 001 』2 = 18
『 010 』2 = 28
『 111 』2 = 78
.
『 001 』2 = 18
1010111.0012 = 127.18 !
以 1010111.0012 轉換為 十六進制為例:
1. 欲轉為 十六進制時 4 個 bit 為一組。
2.『整數』部分: 由右往左 (←) 分組,不足補 0 ;
『小數』部分: 由左往右 (→) 分組,不足補 0。
3. 根據分組查表:
『 0101 』2 = 516
『 0111 』2 = 716
.
『 0010 』2 = 216
1010111.0012 = 57.216 !
八進制、十六進制 轉 二進制
不過是反向的查表!
以 85.CC16 轉換為 十六進制為例:
在《進制轉換 (二進制、八進制、十進制、十六進制)》中有 13 則留言
謝謝大大分享的教學
我覺得這篇很有趣 大大的圖解彷彿讓我憶起小學學數學的感覺
感謝 😃 我還在思考如何讓離散/線代也變簡單…😂
謝謝你的分享
非常謝謝您在網路上所做的分享,很精闢的教學,讓我在回憶之前所學的內容非常快速~
想另外請教您,對於想轉職回資訊業有什麼樣的建議嗎?
我覺得你教得很好,比補習班教的還要好
愛你~
萬分感謝!!!
1
你好,你介紹推薦計買算概論考古題哪裡?電腦打字的!急了
講得好