轉化標準二進位制方法如下,直接用例子來回答:用BCD碼錶示:十位上的十進位制數為 2 == BCD碼錶示為 0010;個位上的十進位制數9 === BCD碼錶示為 1001;所以總的來說 十進位制數 29 用BCD碼錶示為:0010 1001轉換過程:把BCD碼 0010(十進位制數為十位上的 2)右移4位(其實表示當作一個個位數,或者說單純的數值),然後乘以10 還原到十進位制的權重(因為這個數本來表示的就是十進位制數中的十位)。處理完十位上的數,接著處理個位上的數。因為BCD碼的權重和二進位制的前四位權重是一樣(2^n,n為位數),所以直接用前面的十位上的數加上它就可以了。簡單點分析:0010(十位上的2 BCD碼錶示)× 10 + 1001(個位上的9 BCD碼錶示)= 29的二進位制數C程式碼表示:#define BCD_TO_BIN(val) ((((val) >> 4) * 10) + ((val)&15))BCD碼是用4位二進位制數(各個位的權重分別為:8421,所以叫8421碼)來表示一位十進位制數。這裡的一位十進位制數要特別說明下,一位十進位制數只能是 0~9之間的一個數值。比如:6 就是表示一位十進位制數6;66則是表示兩位十進位制數;666則是表示三位十進位制數。擴充套件資料:BCD碼的特點:1、8421編碼直觀,好理解。2、5421碼和2421碼中大於5的數字都是高位為1,5以下的高位為0。3、餘3碼是8421碼加上3,有上溢位和下溢位的空間。4、格雷碼相鄰的2個數只有一位不同。BCD碼是十進位制數,而運算器對資料做加減運算時,都是按二進位制運算規則進行處理的。這樣,當將 BCD碼傳送給運算器進行運算時,其結果需要修正。修正的規則是:當兩個BCD碼相加,如果和等於或小於 1001(即十進位制數9),不需要修正;如果相加之和在 1010 到1111(即十六進位制數 0AH~0FH)之間,則需加 6 進行修正;如果相加時,本位產生了進位,也需加 6 進行修正。這樣做的原因是,機器按二進位制相加,所以 4 位二進位制數相加時,是按“逢十六進一”的原則進行運算的,而實質上是 2 個十進位制數相加,應該按“逢十進一”的原則相加,16 與10相差 6,所以當和超過 9或有進位時,都要加 6 進行修正。
轉化標準二進位制方法如下,直接用例子來回答:用BCD碼錶示:十位上的十進位制數為 2 == BCD碼錶示為 0010;個位上的十進位制數9 === BCD碼錶示為 1001;所以總的來說 十進位制數 29 用BCD碼錶示為:0010 1001轉換過程:把BCD碼 0010(十進位制數為十位上的 2)右移4位(其實表示當作一個個位數,或者說單純的數值),然後乘以10 還原到十進位制的權重(因為這個數本來表示的就是十進位制數中的十位)。處理完十位上的數,接著處理個位上的數。因為BCD碼的權重和二進位制的前四位權重是一樣(2^n,n為位數),所以直接用前面的十位上的數加上它就可以了。簡單點分析:0010(十位上的2 BCD碼錶示)× 10 + 1001(個位上的9 BCD碼錶示)= 29的二進位制數C程式碼表示:#define BCD_TO_BIN(val) ((((val) >> 4) * 10) + ((val)&15))BCD碼是用4位二進位制數(各個位的權重分別為:8421,所以叫8421碼)來表示一位十進位制數。這裡的一位十進位制數要特別說明下,一位十進位制數只能是 0~9之間的一個數值。比如:6 就是表示一位十進位制數6;66則是表示兩位十進位制數;666則是表示三位十進位制數。擴充套件資料:BCD碼的特點:1、8421編碼直觀,好理解。2、5421碼和2421碼中大於5的數字都是高位為1,5以下的高位為0。3、餘3碼是8421碼加上3,有上溢位和下溢位的空間。4、格雷碼相鄰的2個數只有一位不同。BCD碼是十進位制數,而運算器對資料做加減運算時,都是按二進位制運算規則進行處理的。這樣,當將 BCD碼傳送給運算器進行運算時,其結果需要修正。修正的規則是:當兩個BCD碼相加,如果和等於或小於 1001(即十進位制數9),不需要修正;如果相加之和在 1010 到1111(即十六進位制數 0AH~0FH)之間,則需加 6 進行修正;如果相加時,本位產生了進位,也需加 6 進行修正。這樣做的原因是,機器按二進位制相加,所以 4 位二進位制數相加時,是按“逢十六進一”的原則進行運算的,而實質上是 2 個十進位制數相加,應該按“逢十進一”的原則相加,16 與10相差 6,所以當和超過 9或有進位時,都要加 6 進行修正。