8421 BCD码 加减校正

8421码是一种常见的BCD(Binary-Coded Decimal)码,它用4个二进制位表示1个十进制位:

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1111
0 1 2 3 4 5 6 7 8 9 x x

例如:
我们要表示5和15,
使用二进制编码

5	 - 101 		
15	 - 1111

使用8421码表示

5	 - 0101 
15	 - 0001 0101		

在对8421码进行加减操作时候可能产生无意义的值如:1011、1100,这时候就需要进行校正.

8421码加法校正

举例:17 与 18 相加

8421码

  0 0 0 1   0 1 1 1	 (17)  
+ 0 0 0 1   1 0 0 0	 (18) 
 ----------------------------
  0 0 1 0   1 1 1 1 	 (?)		这是一个错误的答案,因为8421码里1111没有对应的十进制

校正方法
当低4位相加的结果大于9的时候,会产生进位,但对于4位二进制位应当大于15时才产生进位,需要对低4位加上0110也即是6来人为的制造一个进位

   0 0 1 0   1 1 1 1
 + 0 0 0 0   0 1 1 0 	(6)
 ---------------------------
   0 0 1 1   0 1 0 1	(35)	校正后结果正确

8421码减法校正

有了上面加法校正的基础,我们可以类推出减法的校正
举例:17 与 8 相减
8421码

  0 0 0 1   0 1 1 1 	(17)
- 0 0 0 0   1 0 0 0 	(8)
---------------------
  0 0 0 0   1 1 1 1 	(?)	结果错误,8421码中没有1111对应的十进制

校正方法

当低4位相减,高4位产生借位时,借来的是16不是10,需要对低4位减上0110也即是6来人为的制造一个准确的借位

 0 0 0 0   1 1 1 1 
-0 0 0 0   0 1 1 0	(6)
-------------------
 0 0 0 0   1 0 0 1	(9)	校正后结果正确
上一篇:1111


下一篇:【ECMAScript5】运算符