计算机底层:BDC码

文章讲述了BDC码(Binary-CodedDecimal)的作用,它是二进制和十进制转换的一种方式,主要介绍了8421码、余3码和2421码的表示方法及运算规则。8421码通过每位的权重8421进行转换,而余3码和2421码各有其特点,如余3码无权位,2421码为了避免歧义对数字范围进行了规定。在计算机底层,这些编码用于高效地处理和显示十进制数据。
摘要由CSDN通过智能技术生成

计算机底层:BDC码

 

        BDC码的作用: 人类喜欢十进制,而机器适合二进制,因此当机器要翻译二进制给人看时,就会进行二进制和十进制的转换,而常规的转换法(k*位权)太麻烦。因此就出现了不同的转换方式,BCD码就可以方便地用二进制 表示 十进制。

          BCD码的表示方式:将二进制的4个bit,作为一个十进制。这样就有2^4=16个的二进制状态,再规定这些状态,来表达十进制0-9的数字。因为0-9只需要10个的二进制状态,因此BCD码就会6种状态是冗余的。

        冗余:没有用到,却可以用到的东西。

        有了10中二进制状态就可以与0-9一一对应,以达到提高效率的作用

         BCD码其中包括了: 8421码、余3码、2421码。

8421码:

        

        8421码表示的是:4个bit位的每位权重的8421,也就是2^3、2^2、2^1、2^0 这是就是二进制转换十进制时的前四个位权。

        

         这张图就是8421码对应0-9的数字。

        如果表示985:

        9:1001

        8:1000

        5:0101

        结果就是,二进制:1001 1000 0101

                          十进制:985

8421码的运算:

         先得出5+8=13得结果,然后拆开个位和十位,然后直接带入8421码。

        最后得出:0001 0011

        但是!这样并不是计算机底层的转换,这只是人工转换的一种技巧。比如做题的时候可以这样。但是计算机绝对不是这样!

计算机底层的转换:

         计算机进行5+8,计算机会先将5和8分别对应8421码,转换成:0101、1000,再将这两串二进制丢给ALU计算逻辑单元,得出的结果就是:1101

        但是会发现:1101并不在8421码规定的表中,也就是说1101在在8421码中没定义。

        为了解决这一问题,8421码规定,如果超出得到1010-1111(8421码无定义)区间内的数,那么就会在无定义的这串二进制加上6,也就是加上0110。

        因为8421码有定义的区间在0-9,10种二进制排序的可能;无定义的区间在10-15,5种二进制的可能,一共16种可能,(因为4个二进制可以表示16进制,你当成16进制看)无定义的数+6,超出了16,高位就会进1。

        比如:13+6=19,其中大于16就会进1,得到13。

       但计算机并不会看出13+6,而是看成8421码规定的二进制。也就是1101+0110=1 0011

        最后在按照4个bit = 一个8421规定的十进制,最后可以拆开变成0001 0011

        也就是:0001是1 ;0011是3,即:13

例子,9+9用8421码表示:

        计算机从8421码表映射出来,变成1001+1001,计算机再把这些丢到ALU中,算出结果为:10010,计算机发现这串二进制在8421码的表中无法映射出结果,说明这串二进制在8421码中无定义,计算机就会将这串二进制+0110,也就是:10010+0110=11000,计算机+6得到一串二进制后,按照4bit拆开,0001 1000,再将每4个bit在8421表中映射,最终得到:18

        

余3码: 

        在8421码规定的每个二进制上加上3,也就是+0011

         会发现余3码是没有权位的。因此将:

        8421码称为:有权码

        余3码称为:无权码

        

2421码:

        2421码是有权码:

         2421码的4bit的权位分别是:2、4、2、1

                        比如:表示3

         0x2+0x4+1x2+1x1=3,因此0011表示的是3

        2421码规定,0-4的数字4bit开头必须是0,0-5的数字4bit开头必须是1

        

        因为发现,2421码的十进制5可以用0101表示,同时也可以用1011表示,这就发生了歧异,为了规范表示避免歧义的发生,所以才规定了:  2421码规定,0-4的数字4bit开头必须是0,0-5的数字4bit开头必须是1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

srhqwe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值