數位電子課程的第3部份,將深入研究記數系統(Numbering Systems),因為它是應用於數位電子所有方法的基礎...
記數系統(Numbering Systems)是用於表示數字和數值的符號組合。它具有計算和執行許多數學運算的方法和規則。在數位電子課程的第3部份,將深入研究這個概念,因為它是應用於數位電子所有方法的基礎。
位值記數系統
執行算術和數學計算是一種在進位制中更容易的操作方式。後者使用一定數量的數位(或符號)構成數制的基礎(見圖1)。10進制系統由10個符號組成,8進制系統由8個符號組成,2進制系統僅由2個符號組成。所考慮的實體的最終值取決於所使用的符號數量和每個符號所佔據的位置。目前先進的文明使用的數制是以10為基數(十進位)並使用十位數字(0、1、2、3、4、5、6、7、8、9)。為方便起見,人類正是使用這種以十為基數的系統,因為手上有十根手指,他可以輕鬆計算出數學值。如果他有六個手指,他可能會使用基數為6的系統。基數越小,表示相同數字所需的位元數就越多,反之亦然。例如,為了表示數字2023,以下各種基數的表示方法都是有效和等價的:
因此,二進位系統比十進位系統需要更多的數字,反過來,十進位系統比十六進位系統需要更多的數字,表示的也是相同的值。因此,數制基數的選擇是非常常規的。使用的符號也是一種慣例,理論上,任何人都可以使用自己的一組數字和符號來創建自己的數制來適應他們。
圖1:被使用的一些數制和符號。
所有數制,無論以何種基數,都是極其重要的,但在本文中,我們將深入研究以2為基數的數制,這是當今電子系統首選的數制,因為邏輯和電氣狀態的數量恰好是2(開和關)。
二進位記數系統
今天,二進位系統隨處可見,只有兩種狀態,它也可以再現複雜的元素。它具有相當大的優勢。今天的電腦無論多麼強大,都使用相當過時的邏輯規則來執行各種程式。這一切的根源是二進位運算。在二進位(或基數為2)的數制中,只有0和1這兩個數字。如果一個數字向左移動一個位置,則該值就會乘以2。相反地,如果一個數字向右移動一個位置,該值除以2。
以下例子有助於說明此問題。假設以10為基數的值8,對應於以2為基數的值00001000。您還可以用以下方式說明這個等價關係:
由於在十進位系統中,所有放在左邊的零都沒有值,因此二進位數字也可以表示為:
如前所述,乘以2是將整個值塊向左移動一位來執行的,如下例所示:
另一方面,除以2是將整個值塊向右移動一個位置來完成的,如下例所示:
計算數位的方式與十進位系統相同:使用第一位數字,列出所有符號0和1,然後使用第二位元數字,從左側的1開始,並在右側重複數字0到1。當所有的組合都完成後,在考慮三位數。以此類推繼續計數。下面的例子更好地闡明了計數順序的概念。
用二進位制進行計算
在進制系統中,如前所述,每次向左側移動位置時所表示的數字要乘以基數,每次向右側移動時始終除以基數。很明顯,如果你想把這個數提升到3次方,比如你只需要向左走3次就可以了。在十進位系統中也會發生同樣的情況。位置左移相當於該值乘以10,位置右移相當於相同值除以10。下面是一些解釋性的例子。儘管到目前為止,所有裝置(PC、智慧型手機、平板電腦)都擁有科學計算機(參見圖2中的Windows計算機),用它可以進行任何進制的所有運算,也可以進行一個進制和另一個進制之間的轉換,但瞭解最重要的計算方法總是有用的。
圖2:程式設計模式下的Windows計算機。
求和無疑是最簡單的算數運算,與十進位非常相似。它基於以下單個二進位數字的總和:
有了這個經驗法則,再加上一點耐心和注意力,就可以執行任何類型、任何難度的加法。
使用簡單的操作,可以將數位從一個進制轉換為另一個進制中的相應表示。下面我們來研究一下二進位數字到十進位數字的轉換。例如,讓我們有以下要轉換的值:
從左邊開始,將單個二進位數字(1或0)乘以2的次方,直至該數字所佔位置的數字減一。最右邊的位置是0,而最左邊的位置等於位數減一。
所以:
另一種更快更友好的方法如下。我們將各個符號寫在表格的一行上。在頂行,計算2的冪,從右邊開始,向左加倍。最後,將等於1的符號(綠色背景)處的2的冪相加。最後的表格如下所示。
將1024+512+64+16+8+4+1相加得到以10為基數的值1629。相反的轉換,即將數值從十進位系統轉換為二進位系統,是以一種不同但同樣簡單的方式進行的。轉換過程涉及一系列連續除以2。每個除法的餘數僅代表二進位數字的一個數字(0或1),從右到左。此外,每次除法的結果成為下一次除法的被除數。當結果等於0時轉換停止,即當沒有更多的除法要執行時。例如,讓我們有以下要轉換的值:
連續劃分的過程如下:
從下到上,十進位數字37對應的二進位數字是100101,按照下面的標記法:
可能會出現一個問題。為什麼最後一次除法時,1:2除法的餘數等於1?下面的圖示將我們帶回到幼稚園,澄清了所有疑問。
演算法
下面,我們提出兩種簡單的演算法來執行數制之間的轉換。它們非常簡單,並且是用標準C語言編寫的。顯然,它們並不構成一個放諸四海而皆準的解決方案,但軟體可以用無數種不同的方式編寫。第一種是將一個數字從二進位系統轉換到十進位系統。第二種執行相反的操作,將一個數字從十進位系統轉換到二進位系統。
#include <stdio.h> void main() { long num, binary_num, decimal_num = 0, base = 1, rem; printf (” Enter a binary number \n”); scanf (” %ld”, &num); binary_num = num; while ( num > 0) { rem = num % 10; decimal_num = decimal_num + rem * base; num = num / 10; base = base * 2; } printf ( ” The binary number is %ld \t”, binary_num); printf (” \n The decimal number is %d \t”, decimal_num); } #include <stdio.h> void main() { int n, c, k; printf(“Enter a number in base 10\n”); scanf(“%d”, &n); printf(“%d in binary number system is:\n”, n); for (c = 10; c >= 0; c–) { k = n >> c; if (k & 1) printf(“1”); else printf(“0”); } printf(“\n”); }
結論
所有數制的原理都是一樣的;僅使用的符號數量發生變化。此外,所有系統也都是相似的;只有符號的數量發生變化。不要低估對二進位系統的理解和掌握,因為它將被大量用於電子元件、軟體創建,尤其是微控制器程式設計中。
編譯:Ricardo Xie
(參考原文:Digital Electronics Course: Part 3 – Numbering Systems,by Stephen Woodward)
目前寬能隙(WBG)半導體的發展仍相當火熱,是由於經過近幾年市場證明,寬能隙半導體能確實提升各應用系統的能源轉換效率,尤其是應用系統走向高壓此一趨勢,更是需要寬能隙元件才能進一步提升能效,對實現節能環保,有相當大的助益。因此,各家業者也紛紛精進自身技術,並加大投資力道,提升寬能隙元件的產能,以因應市場所需。
本研討會將邀請寬能隙半導體元件關鍵供應商與供應鏈上下游廠商,一同探討寬能隙半導體最新技術與應用市場進展,以及業者佈局市場的策略。
加入LINE@,最新消息一手掌握!