二進位制怎麼換成8421bcd碼二進位制怎麼換成8421BCD碼

2021-03-06 05:53:50 字數 2904 閱讀 2613

1樓:匿名使用者

在微控制器裡面,如:顯示個溫度值,這時,要取一個數的個位、十位、百位,可以用/和 %(求商和求餘)來解決。

但是,在fpga裡面用求商和求餘將會非常消耗資源,這樣就必須用到二進位制轉bcd碼了,這裡介紹一種簡單的加3移位演算法。

注:b代表二進位制,d代表十進位制,0x代表十六進位制,bcd為bcd碼,下同。

1、加3移位法

以二進位制數(0000_101 xn)b=(10+xn)d為例,

序列輸入三位後,(0101)b=5(d)

左移一位後:(0000_101xn)b=(10+xn)d

如果(0000_101xn)b直接輸出顯示為:

當xn=0時,0000_1010=0x0a。此為錯誤的bcd碼。

採用加3移位法,修正移位結果:

序列輸入三位後,結果大於4

(0101)b=5(d)

加3:(0101)b+(0011)b=(1000)b   --十進位制表示:5+3=8

再左移一位後:

(1000xn)b= (0001_000xn)bcd

對應十進位制顯示:1 xn

每四位bcd碼對應一位十進位制數,即:(10+xn)d,轉換成功

注:xn為下一位序列輸入的二進位制數。

2、設計思路

這裡一共需要四個模組:計數器、移位器、加法器、暫存器輸出。

分別設計好之後,用狀態機控制它們,就完成了。

3、**結果

注:圖中clk為時鐘,en為高電平使能,rst為高電平復位,data_in為輸入的12位二進位制碼,以十進位制的形式顯示在時序圖;qout為輸出的16位bcd碼,以十六進位制的形式顯示在時序圖,17個時鐘上升沿可完成轉換任務。

4、綜合結果

5、難點分析

要搞懂這個加3移位演算法,必須要按照8位二進位制(11101011)轉bcd過程圖,自己手動推導一下,才容易理解。

此演算法的難點在於,需要把輸入的二進位制數,按照每四個bit來劃分為一個單元(所以輸入的二進位制數,位寬必須是4的倍數),然後,每個單元都要同時判斷是否大於4,大於就要加3,否則不加.

理解了這個演算法之後,那麼bcd轉二進位制就非常容易了,減3移位即可,減3可以用補碼來解決。

加3移位法只能把整數的二進位制碼轉成整數的bcd碼,小數則不行,要算小數的話,可以先乘以10的n次方,再轉bcd碼。

6、 參考文獻

基於cpld的二進位制碼轉換為二.十進位制(bcd)碼的電路

2樓:我是黃黃你是誰

‎bcd是binary-coded decimal的簡稱,用4位二進位制數來表示1位十進位制數中的0~9這10個數碼,就是說二進位制編碼的十進位制數,也就是所說的bcd碼。

(日常所說的bcd碼大都是指8421bcd碼形式。)二進位制換成8421cd碼

1、先將二進位制轉換為十進位制;

2、再將十進位制轉換為8421cd碼。

例如(1101.1)二進位制 = (13.5)十進位制=(0001 0011.0101)8421bcd碼

3樓:匿名使用者

可以先換成十進位制,再轉換成8421碼

例如(1101.1)二進位制 = (13.5)十進位制=(0001 0011.0101)8421bcd碼

4樓:曉菲戈

給個例子啊::

二進位制:1001010=74d

8421bcd就是將7、4分別用4位的二進位制表示出來:(01110100)8421bcd

5樓:末日之戰

樓主要的是什麼方法的轉換?是軟體的還是純硬體的?

6樓:匿名使用者

8421bcd碼本身就是用來表示二制碼的,不知道你所謂的二進位制轉換8421bcd碼是什麼意思!

數位電路二進位制如何轉換8421bcd

7樓:南瓜蘋果

二進位制轉換8421bcd的思路如下:

給定一個二進位制數,要轉bcd碼。一個常用演算法就是不斷將該數除以10,以此依次分解出個位、十位、百位……上的數字,這些數字的4位二進位制數就是對應的bcd。但是這樣的演算法需要不斷做除法操作十分的麻煩。

可以使用名為加三左移法來完成。

這個演算法基於以下的事實:

一個數乘以2,相當於其二進位制左移1位;兩個bcd碼相加,如果結果大於9,需要加上6作為修正。

擴充套件資料

bcd碼的求和:

bcd碼使用4位二進位制數來表示十進位制中0~9這10個數的數碼。例如,十進位制的237,其bcd碼就是0010_0011_0111,但是其二進位制是1110_1101。

我們先來研究兩個4位的bcd碼相加的情況。設這兩個bcd碼對應的十進位制是a,b,其中a,b∈。此時只有3種情況:

1、0≤a+b≤9;

2、10≤a+b≤15;

3、16≤a+b≤18。

8樓:我拜通天

你要知道,8421bcd碼的轉換原理,是把十進位制數,每位數上的值轉換為二進位制,如16,分開為1和6,轉換為8421就為0001,0110

如果你不能理解,那麼就看看5421bcd碼吧,如5421bcd碼1000,0110,1001表示的十進位制是556:先是把每一位轉換,這裡是5421bcd,所以個,十,百位為分別為5*1+1=6,4*1+2*1=6,5*1=5,即為566十進位制數

9樓:邦交

先轉化為十進位制,再按各位數字相應轉化為二進位制!

10樓:匿名使用者

我舉個例子,你一下就懂了。例如二進位制碼:1000111b 對應的十進位制碼為:71d。所謂8421是指 1000 代表

8,0100代表4,0010代表2,0001代表1。所以71拆分成7和1,7對應0111 ,1對應0001,所以1000111(b)對應的8421碼就是:0111 0001(8421bcd)

二進位制如何轉換成八進位制二進位制怎麼轉化成其他進位制詳細過程

先了解二進位制 數與八進位制數之間的對應關係。有個方法,把二進位制的數從右往左,三位一組,不夠補0 列 111 4 2 1 7 11001拆分為 001和011,001 1,011 2 1 3 那麼11001轉換為八進位制就是31.擴充套件資料二進位制轉換為十六進位制 參照二進位制轉八進位制,但是它...

有關十進位制整數 BCD 轉換成二進位制的電路設計

在數學中,我們都知道隨便一個十進位制數如5468,那麼它的計算過程可以轉換為 5468 5 1000 4 100 6 10 8,因此bcd碼轉成二進位制數的演算法就是 abcd a 1000 b 100 c 10 d。這種演算法是最常規的一種演算法,裡面需要用到乘法器以及加法器,這種實現方式比較耗費...

0 1如何轉化為二進位制,0 5轉換成二進位制

您好!很高興為您服務。把1 就可以轉化為了。提問。怎麼成呢。你這個題目是啥,可以完整的告訴我嗎。提問。我想把52803轉換成,在 中。什麼 提問。excel好的。1.選中單元格,滑鼠右鍵單擊,在下拉選單中選中 設定單元格格式 2.在單元格設定的 數字 選單下選擇自定義,在右側選擇 g 通用格式 3....