1樓:2一瞬間
8421bcd碼轉化為十進位制:
8421碼一共四位 每位都是0或者是1 假設給出的碼是1010 那麼每位分別和和8421對應 可得
8*1+4*0+2*1+1*0=10(十進位制) 再者 碼1100 8*1+4*1+2*0+1*0=12(十進位制) 就是四位和8421對應在進行相加
十進位制數(整數或小數)轉化為8421bcd碼
75.4=(0111 0101.0100)bcd 若將bcd碼1000 0101.0101轉換為十進位制數如: (1000 0101.0101)bcd=85.5
十進位制數(整數或小數)轉化為二進位制
整數除以2,商繼續除以2,得到0為止
22 / 2 11 餘0
11/2 5 餘 1
5 /2 2 餘 1
2 /2 1 餘 0
1 /2 0 餘 1
所以22的二進位制是10110
小數乘以2,取整,小數部分繼續乘以2,取整,得到小數部分0為止,將整數順序排列。
0.8125x2=1.625 取整1,小數部分是0.625
0.625x2=1.25 取整1,小數部分是0.25
0.25x2=0.5 取整0,小數部分是0.5
0.5x2=1.0 取整1,小數部分是0,結束
所以0.8125的二進位制是0.1101
十進位制22.8125等於二進位制10110.1101
二進位制怎麼換成8421bcd碼
2樓:匿名使用者
在微控制器裡面,如:顯示個溫度值,這時,要取一個數的個位、十位、百位,可以用/和 %(求商和求餘)來解決。
但是,在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)碼的電路
3樓:我是黃黃你是誰
bcd是binary-coded decimal的簡稱,用4位二進位制數來表示1位十進位制數中的0~9這10個數碼,就是說二進位制編碼的十進位制數,也就是所說的bcd碼。
(日常所說的bcd碼大都是指8421bcd碼形式。)二進位制換成8421cd碼
1、先將二進位制轉換為十進位制;
2、再將十進位制轉換為8421cd碼。
例如(1101.1)二進位制 = (13.5)十進位制=(0001 0011.0101)8421bcd碼
4樓:匿名使用者
可以先換成十進位制,再轉換成8421碼
例如(1101.1)二進位制 = (13.5)十進位制=(0001 0011.0101)8421bcd碼
5樓:曉菲戈
給個例子啊::
二進位制:1001010=74d
8421bcd就是將7、4分別用4位的二進位制表示出來:(01110100)8421bcd
6樓:末日之戰
樓主要的是什麼方法的轉換?是軟體的還是純硬體的?
7樓:匿名使用者
8421bcd碼本身就是用來表示二制碼的,不知道你所謂的二進位制轉換8421bcd碼是什麼意思!
十六進位制數bbbh轉化為十進位制數是多少呢過程
3003 十六進位制 英文名稱 hexadecimal 是計算機中資料的一種表示方法。十六進位制照樣採用位置計數法,位權是16為底的冪。為了區別不同數製表示的數,通常用右括另外下標數字或字母表示數制,十進位制數用d表示,二進位制用b表示,十六進位制數用h表示,八進位制用o表示。十六進位制轉換成十進位...
十進位制轉十六進位制,十進位制轉化為十六進位制怎麼算
1 十六進位制的計數方法是滿16進1,所以十進位制數16在十六進位制中是10,而十進位制的17在十六進位制中是11,以此類推,十進位制的30在十六進位制中是1e。2 輸入格式 輸入包含一個非負整數a,表示要轉換的數。0 a 2147483647。3 輸出格式,輸出這個整數的16進製表示。4 樣例輸出...
怎麼把十進位制小數轉化為二進位制怎麼把十進位制小數轉化為二進位制
採用 乘2取整,順序排列 法可以十進位制小數轉化為二進位制,現在以十進位制數0.125為例進行演示,具體操作請參照以下步驟。1 方法主要是小數部分乘以2,取整數部分依次從左往右放在小數點後,直至小數點後為0,以0.125進行演示。2 首先將小數部分0.125乘以2,得0.25,然後取整數部分0。3 ...