权重相加相减法进行二进制数与十进制数间相互转换

发布于:2022-12-26 ⋅ 阅读:(550) ⋅ 点赞:(0)

在高中阶段信息技术课程课本中,二进制数与十进制数之间的转换只介绍了短除法反向取余来进行进制转换,这样通常效率低下。而权重加减的方法原理简单,计算迅速。有的信息技术老师可能会提到类似方法,但通常不探究原理,所以接下来为大家介绍权重加减法进行转换,并探究其原理。

追求方法的跳到section 2~ 

一,权重,BCD码

首先,我们这个方法叫权重加减法,那何为权重呢?首先,我们需要了解BCD码。

BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点记数法,采用BCD码,既可保存数值的精确度,又可免去使计算机作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。BCD码也称二进码十进数,BCD码可分为有权码无权码两类

 这是官方的解释,翻译成人话就是:

BCD码是用于更方便的表示二进制数并方便二进制与10进制之间相互转换的编码,其中的细分有有权码和无权码,我们今天要介绍的就是有权码之一,-- 8421码

BCD码书面格式通常为:

(0100,0100) 2 = (68)10

由于二进制数最前面的0可以省略(最后的0不可省略!!!),所以这样写:ps:二进制数与二进制码不同,码不可省略

(100, 0100)2 = (68)10

这时我们发现一个问题,二进制数1000100本身是不够8位的,但它跟01000100等价那我们可不可以写成这样?:

(1000,100)2

答案是不可以 !,这样的结果与之前是完全不同的。所以,遇到不够4的整数倍的位数的二进制码,我们会在最前面加上一个0来使它可以被4整除,例子:

1000100 = 01000100 = (0100, 0100)2 = (100, 0100)2 = (68)10

当然我们换个思路,不补位,从后往前也可以,但是为了方便理解我们暂不讲这样的方法。

接下来我们说8421码,这个码是BCD有权码之一,我们记住它的权的集合是{x | x = 2^{n}n\epsilon Z}即可:

 (2的整数倍)......128,64,32,16,8,4,2,1

二,二进制转十进制

 首先第一步:将二进制数写成一排

 其次第二步:再权重从右往左写成一排,二进制码多少位权重写多少个,如图:

 最后第三步,把每一位二进制数与对应权重相乘,再把结果全部加起来就好了,因为很多是0,所以简化成---把1对应的权全部写出来,再加一下,就转换完成了,如图:

 由此我们知道,1000100的十进制是68,大家举一反三一下即可,这就是权重相加法。

三,十进制转二进制

首先第一步:将数字写出来,找到一个比这个数小且最接近这个数的权,例如68找权,不找128,找64,将这个权写在数字右边,再把接下来的权写完,如图:

 

其次第二步:数字与权间写一个减号,将数字与权相减,如果够减就在边上写个1,将运算结果写在数字下面,如图:

然后第三步:仿照第二步的方法,如果不够,就在边上写0,将数字原封不动抄在数字在下面,一直计算到权结束,如图:

最后第四步:将右边的1和0从上往下写出来就可以了,得出结果为 68的二进制数为1000100这就是权重相减法

 

四,总结

这里讲了关于BCD码和权重相加相减的原理,老师可能不会讲这些,直接就是让你们被2的0-10次方,但是我们可以了解一个这个叫8421码,是BCD有权码的一种,被设计用来做二进制与十进制之间的转换。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到