1樓:南瓜蘋果
二進位制轉換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。
2樓:我拜通天
你要知道,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十進位制數
3樓:邦交
先轉化為十進位制,再按各位數字相應轉化為二進位制!
4樓:匿名使用者
我舉個例子,你一下就懂了。例如二進位制碼:1000111b 對應的十進位制碼為:71d。所謂8421是指 1000 代表
8,0100代表4,0010代表2,0001代表1。所以71拆分成7和1,7對應0111 ,1對應0001,所以1000111(b)對應的8421碼就是:0111 0001(8421bcd)
二進位制怎麼換成8421bcd碼
5樓:匿名使用者
在微控制器裡面,如:顯示個溫度值,這時,要取一個數的個位、十位、百位,可以用/和 %(求商和求餘)來解決。
但是,在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)碼的電路
6樓:我是黃黃你是誰
bcd是binary-coded decimal的簡稱,用4位二進位制數來表示1位十進位制數中的0~9這10個數碼,就是說二進位制編碼的十進位制數,也就是所說的bcd碼。
(日常所說的bcd碼大都是指8421bcd碼形式。)二進位制換成8421cd碼
1、先將二進位制轉換為十進位制;
2、再將十進位制轉換為8421cd碼。
例如(1101.1)二進位制 = (13.5)十進位制=(0001 0011.0101)8421bcd碼
7樓:匿名使用者
可以先換成十進位制,再轉換成8421碼
例如(1101.1)二進位制 = (13.5)十進位制=(0001 0011.0101)8421bcd碼
8樓:曉菲戈
給個例子啊::
二進位制:1001010=74d
8421bcd就是將7、4分別用4位的二進位制表示出來:(01110100)8421bcd
9樓:末日之戰
樓主要的是什麼方法的轉換?是軟體的還是純硬體的?
10樓:匿名使用者
8421bcd碼本身就是用來表示二制碼的,不知道你所謂的二進位制轉換8421bcd碼是什麼意思!
請問十進位制如何轉換成二進位制,二進位制數如何轉換成十進位制數?
還是寫基數,舉個複雜些的例子,你可以選擇僅涉及整數的部分來用 95.625轉換成二進位制 先寫二進位制各位基數 從1開始寫,右邊寫個小數點,先向左邊逐位寫,每位是右邊位陣列乘以2,寫到比95大為止 128 64 32 16 8 4 2 1.然後向左邊寫,每項是左邊項除以2,寫 三 四項即可 128 ...
二進位制如何轉十六進位制,二進位制轉換成十六進位制計算方法
從末尾開始四個一組變成16進位制就可以了 如 101 1110 1010 0010 16進製為 5 e a 2 1 二進位制數 八進位制數 十六進位制數轉十進位制數 有一個公式 二進位制數 八進位制數 十六進位制數的各位數字分別乖以各自的基數的 n 1 次方,其和相加之和便是相應的十進位制數。個位,...
什麼是二進位制?二進位制怎麼算,二進位制是什麼意思,怎麼算
二進位制 binary 在數學和數位電路中指以2為基數的記數系統,以2為基數代表系統是二進位制的。這一系統中,通常用兩個不同的符號0 代表零 和1 代表一 來表示 1 數位電子電路中,邏輯閘的實現直接應用了二進位制,因此現代的計算機和依賴計算機的裝置裡都用到二進位制。每個數字稱為一個位元 bit,b...