C/C++教程

BCD码和非BCD码的计算与转换

本文主要是介绍BCD码和非BCD码的计算与转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • BCD码和非BCD码的计算与转换
    • BCD编码
      • 介绍:
      • 优点:
    • 常用的BCD编码方式
      • 8421码
      • 5421码
      • 2421码
      • 余3码
    • 非压缩BCD码

BCD码和非BCD码的计算与转换

BCD编码

介绍:

BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。

优点:

BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。

这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

常用的BCD编码方式

8421码

8421码是一种有权码,0~9的8421码与其二进制码完全相同

和四位自然二进制码不同的是,它只选用了四位二进制码中前10组代码,即用0000~1001分别代表它所对应的十进制数,余下的六组代码不用。也就是说它在4位二进制数字中只占据了前十位(因为一个十进制位数字只有十个数制位);

//举个例子
25的二进制编码是0001 1001
25的8421BCD码是0010 0101
因为8421码是把每一个十进制数字都分离成一个4位的二进制数字,因此0010的十进制数字是2,0101的十进制数字是5,所以,25的8421BCD码是0010 0101
看另一个例子
123转换成8421BCD码如下
1——>0001
2——>0010
3——>0011
因此123的8421BCD码是0001 0010 0011

5421码

5421码是一种有权码,4位二进制码的权依次为5,4,2,1。从十进制的0~9转换为5421码,就是按照每一位的权凑出所要的数字,需要注意的是5421码并不是唯一的

比如说5
可以使用以下两种编码:1000,0101
但是一般情况下,我们都采用1000来进行表示5,也就是采用位权比较高的数来表示
7也是如此:1010,0111要采用1010,因为它位权比较高

2421码

2421码也是一种有权码,4位二进制码的权依次为2,4,2,1.从十进制的数字转换到2421码也是凑的思路。但是出现了两个2,并且还有4(=2+2)就注定了这个规律要比5421码稍微复杂一点。简单来说就是,先用4来凑(除了5,它的2421码为1011,而不是0101),>5的数先用第一个2,<5的数先用第二个2。

比如说6使用的1100,而不是0110

4采用是0100而不是1011

3是0011而不是1001


余3码

余3码是8421 BCD码的每个码组**加3(**0011)形成的。常用于BCD码的运算电路中。

比如说25
25的8421BCD码是0010 0101
25的余三码是0010 0100

非压缩BCD码

非压缩型BCD码是可存放一个一位十进制数的一个字节。

应用

非压缩型BCD码一个字节可存放一个一位十进制数,其中高4位的内容不做规定(也有部分书籍要求为0,二者均可),低4位二进制表示该位十进制数。如5的非压缩型BCD码是0000 0101,必须存放在一个字节中,6的非压缩型BCD码是0000 0110;

56的非压缩型BCD码是00000101 00000110

这篇关于BCD码和非BCD码的计算与转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!