BCD码与十进制的互相转换

首先记住BCD码的定义:用四位二进制数表示一位十进制数

公式:

是不是对这个公式表示不理解,难道不应该反过来吗?用这个公式发现怎么算不到正确的答案呢。

举个例子10进制245转化为二进制为1111 0101

那么求245的高四位为245/2^4=15(十进制)=0x0F(十六进制)

低四位为245%2^4=5(十进制)=0x05(十六进制)

再举个例子64535(十进制)转化为二进制为1111 1100 0001 0111

求64535的高八位为64535/2^8=252(十进制)=0xFC(十六进制)

低八位为64535%2^8=23(十进制)=0x17(十六进制)

看这个例子写的是BCD码转十进制,实际是转化成了用两位十进制数表示的BCD码。

说到这里应该都理解了,实际上就是我们错误理解了意思,以为BCD码转十进制是把BCD码82转化成十进制130,实际是先把1000 0010这个二进制数转化成10进制130,再取它的高四位和地四位,高四位为8,低四位为2。如果是计算十进制转BCD码的话,我们其实很快能算出来,关键是怎么用公式表达出来,这就是上面公式的意义。如果不是用c语言表示,那其实口算就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值