4位二进制数如何转换成十进制数的方法有哪些?

作者&投稿:巩牧 (若有异议请与网页底部的电邮联系)
~

BCD码使用4位二进制数来表示十进制中0~9这10个数的数码。例如,十进制的237,其BCD码就是 0010_0011_0111 ,但是其二进制是 1110_1101 。

我们先来研究两个4位的BCD码相加的情况。设这两个BCD码对应的十进制是a,b,其中a,b∈{0,1,2,...,9}。此时只有3种情况:

也就是说:

第一种情况显然不需要再修正。
第二种情况,例如,5+8=13,我们希望得到BCD码是 0001_0011 ,但是运算结果 1101 ,因此如果我们加上了6,就可以得到正确结果: 1101 + 0110 = 0001_0011 。这是因为,十进制是逢十进一,但是4位BCD加法,在看作是二进制数做加法时,是逢十六进一。因此,如果结果是10≤a+b≤15,加上6以后就是16+0≤a+b+6≤16+5,此时因为逢十六进一的原因,就得到了结果 1_0≤[a+b+6]≤1_5 ,这个结果就是对的。
第三种情况,因为16≤a+b≤18,逢十六进一后,我们得到了 1_0≤[a+b]≤1_2 ,为了使结果正确,如果我们加上一个修正值6,就得到 1_6≤[a+b+6]≤1_8 ,从而结果也变得正确。

综上所述,如果两个BCD码相加:

考虑一个例子,比如 35+99=134。35和99的BCD码分别是 0011_0101 和 1001_1001 。先计算低4位: 0101 + 1001 = 1110 ,因为这个值大于9,因此加上6作为修正: 1110 + 0110 = 1_0100 。现在计算高四位,同时注意到还有一个进位: 0011 + 1001 + 0001 = 1101 ,这个值还是大于9,加上6,得到 1101 + 0110 = 1_0011 。因此最终结果是 1_0011_0100 ,这刚好就是134的BCD码。

我们之所以能够安全地加上进位,是因为BCD加法比照的就是十进制的加法,只不过前者是4位为一个单位,而后者是以1位数字作为一个单位。加上修正值后,BCD加法的进位就相当于十进制加法的进位。图示如下:

给定一个二进制数,要转BCD码。一个常用算法就是不断将该数除以10,以此依次分解出个位、十位、百位……上的数字,这些数字的4位二进制数就是对应的BCD。但是这样的算法需要不断做除法操作十分的麻烦。我们可以使用名为 加三左移法 来完成。

这个算法基于以下的事实:

一个n位二进制数 ,其展开是 如果使用秦九韶算法的嵌套形式写法,可以写成: 或者若令 则 如果使用这种形式,我们先计算的是 ,然后是 ,然后是 ,……,最后是 。

注意到 就是把 左移1位,这样就会在最右边空出一个位,之后再加 就是用 填充这个最低位,从而我们得到了 。不断左移,最终就能得到 ,现在我们来设计一个算法使得左移结束后能得到对应的BCD码。

设 是一个无限长的、初始状态为所有位都是0的理想寄存器, 是欲转换的数。我们使用下面的 归纳法 来构造证明我们通过不断左移最终能够得到存储在 中的 对应的BCD码:

由数学归纳原理,移动 len(h) 次后,我们最终可以得到 的BCD码。

作为一个例子,考虑使用该算法将 的二进制 1000_0110 转为BCD码:

现在, 已经全部移入,此时 的值就是 0001_0011_0100 ,它就是 的BCD码。

C语言的算法如下:




二进制如何转换成十进制?
1、整数二进制转换为十进制 方法:首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。若首位是0的正整数,补齐位数以后,将二进制中的位数分别与对应的值相乘,然后相加得到的就为十进制。若二进制补足位数后首位为1时,就需要先取反再换算。2、小数二进制转换为十进制...

二进制如何转换为八进制
二进制和八进制是计算机技术常用的不同数制。它们有不同的基数,二进制是二,而八进制是八,这意味着两者必须分组才能转换。这种转换听起来很复杂,但实际操作起来要简单得多。二进制转换成八进制 每三位二进制数相当于一个八进制数 从后面开始划,三位一段,最前面不足三位的添0 比如:1011011101 就...

十进制数与二进制数如何进行转换
十进制数与二进制数如何进行转换?相关内容如下:十进制数到二进制数的转换:方法一:整数部分的转换 将十进制数除以2,得到商和余数。将得到的余数作为二进制数的一位数,从低位向高位排列。将商再次除以2,得到新的商和余数。重复步骤2和步骤3,直到商为0为止。方法二:小数部分的转换 将十进制小数...

四位二进制如何转化为四位8进制,四位八进制最大是多少
从低位开始,每3位二进制数转换成1位八进制数。所以4位二进制数转化成八进制数,只需要2位八进制数即可。非要4位八进制数的话,高2位就是0。4位八进制数可以表示的范围是0000~7777,也就是十进制数的0~4095。

二进制数如何像8进制转换?如0.110101
每3位二进制数转换成1位八进制数:000~111 => 0~7。例如0.110101b=0.65o。

如何转换成二进制数?
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数。下面举例:例1:将0.125换算为二进制,结果为:将0.125换算为二进制(0.001)2 。...

二进制如何转换成十六进制??
1、首先,先要看看十六位数的表示方法。2、二进制数与十六进制数之间的对应关系表,如下:3、二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。4、组分好以后,对照二进制与十六进制数的对应表(如图2中所示),将四位二进制按权相加,得到...

二进制如何转化成十进制?
仿照例题1.3.1,我们可以将二进制数10表示为:10=1×2^1+0×2^0 十进制与二进制的关系 一般地,任意二进制数可表示为:例题 1.3.2 试将二进制数(01010110)B转换为十进制数。解:将每一位二进制数乘以位权后相加便得相应的十进制数 在数字电子技术和计算机应用中,二值数据常用数字波形来...

二进制数转换成十进制数的方法是什么?
6、 如果小数的整数部分有大于0的整数时该如何转换呢?如以上整数转换成二进制,小数转换成二进制,然后加在一起。7、整数二进制转换为十进制:首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的...

十六进制数如何转换为二进制数
例如:3A7.B1H=1110100111.10110001B。二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一组。组分好以后,对照二进制与十六进制数的对应关系,将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变,最后得到的...

洛川县15340629040: 二进制数值如何转换成十进制的数值 -
言福韦司: 二、各种数制间的转换 由于不同的进位计数制所用的数字个数是不相同的.利用上表能较方便地对不同数制的数进行转换.1.二进制转换成十进制 任何一个二进制数的值都用它的按位权展开式表示.例如:将二进制数(10101.11)2转换成...

洛川县15340629040: 二进制数如何转换成十进制数?比如这个:1*2^5+1*2^4+1*2^3+1*2^2+1=32+16+8+4+1=61他为什么结果是等于61 到底是如何计算出来呢 -
言福韦司:[答案] 就是是第几位就乘以2的几次方 从右往左数 二进制转十进制 从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=...

洛川县15340629040: 2进制数怎么转换成10进制的啊 -
言福韦司:[答案] 例如10011转换成10进制就是1X2^0 +0X2^1 +0X2^2 +1X2^3 +1X2^4 =1+0+0+8+16 =25

洛川县15340629040: 二进制如何转化为十进制 -
言福韦司: 口诀:整数二进制用数值乘以2的幂次依次相加,小数二进制用数值乘以2的负幂次然后依次相加. 1、整数二进制转换为十进制:首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数. 若二进制补足位数后...

洛川县15340629040: 二进制怎么转换成十进制 -
言福韦司: 二进制是一种计算技术中广泛采用的数制.它是用0和1两个数码来表示的数,基数为2.进位规则是“逢二进一”,借位规则是“借一当二”.将二进制转换成十进制的方法比较简单,只要将被转换的数按式(2.2)展开并计算出结果即可.1、下面是一个二进制数. 2、从左几次来看每个进制位的角标,因为计算机角标从0开始算起,所以他们角标如下图. 3、来计算每个进制的值,用二进制的每一位乘以基数的角标次方,如下图. 4、然后算出每一位的值. 5、将他们相加即可,转换完成.

洛川县15340629040: 二进制数110001转换成十进制是多少? -
言福韦司: 二进制化成十进制,是用每位上的数字乘2的次方,右起第一位是0次方,往左依次是1次方,2次方,以此类推.十进制化成二进制,是用这个数每次除以2,然后把余数依次从右往左写.最后一个算式的商写在最高位.

洛川县15340629040: 二进制怎么转十进制 -
言福韦司: 从二进制数的最右数起,最右方的第一个数乘以2的0次方,第二个数乘以2的1次方……依次类推,把各结果累计相加就是转换后的十进制数. 例: 1010=0*2^0+1*2^1+0*2^2+1*2^3=0+2+0+8=10

洛川县15340629040: 二进位制转换为十进制的方法 -
言福韦司: 比如一个二进数是:100,转化成10进制的话就是:2^2=4 比如一个二进数是:101,转化成10进制的话就是:2^2+2^0=5 比如一个二进数是:111,转化成10进制的话就是:2^2+2^1+2^0=7

洛川县15340629040: 怎样将二进制数变成十进制数??
言福韦司: 一、二进制数转换成十进制数 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和.这种做法称为"按权相加"法. 例1105 把二进制数110.11转换成十进制数. 二、十进制数转换为二...

洛川县15340629040: 2进制怎么转10进制? -
言福韦司: 告诉你一个简单的道理 1.不论什么进制----十进制 都是基数乘位置的次方数 例如: 二进制1010---十进制就是 : 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10 八进制77 ---- 十进制就是: 7*7^1 + 7*7^0 = 49+7 = 56 2.十进制 转换为 不论什么进制 都是本身除以基数 然后把余数倒过来排列 例如: 十进制 4020 到 16进制 : 4020/16 余数为 4 251/16 ... 11 (16进制11为 B) 剩余 15 不够除 也为余数 (16进制15为 F) 最后得出为: FB4

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网