首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bcd与十进制转换方法_5421bcd转换十进制

BCD其实就是之前在数字电路中说的 用4位二进制数值 来表示一个0-9中的数字, 例如: 0000=0 0001=1 0010=2 0011=3 也就是说如果把一个数字作为一个BCD,例如: 11...22 那么他应该展开为: 00010001 00100010 也就是对应为十进制: 17 34 所以一个BCD吗转为十进制数据的思想就是: 将BCD每个数字分离出来,例如上面的11 将十位的1分离出来然后左移...十进制转BCD的 思想:将这个十进制数字用二进制表示,高4位表示的数字是多少 * 10再加上低四位表示 的数字,C程序如下: #define BCD_to_Decimal(bcd) ((((bcd...) / 10) << 4) + ((bcd) % 10)) #define Decimal_to_BCD(dec) (((0xf0 & (dec)) >> 4)*10 + (0x0f & (dec))

1.4K10

一文攻破BCD转换与各进制转换

一文攻破BCD转换与各进制转换 0.导语 最近做的项目中时刻看到时间戳用BCD[xx]来定义,那么针对这种定义,究竟代表什么意思,如何来使用呢,本节来阐述BCD与其他进制转换以及在笔试当中,会碰到进制转换问题...1.BCD BCD(Binary-Coded Decimal‎)亦称二进十进数或二-十进制代码。 用4位二进制数来表示1位十进制数中的0~9这10个数码。...BCD这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。 这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。...BCD的运算规则:BCD是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD传送给运算器进行运算时,其结果需要修正。...上述学习自:https://blog.csdn.net/morixinguan/article/details/50682650 BCD与任意进制数的转换实现如下: 举个例子:比如0x2A----->

3.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

解析BCD

近日有朋友问起BCD,在此我们就来说说这BCD。为什么会有BCD?...最常用的BCD称为8421BCD,8.4.2.1 分别是4位二进数的位取值。...具体编程函数如下,函数中参数val是一个字节数,那么此BCD是两位的BCD,即高四位是一个值、低四位是一个值,所以将高四位乘以10加上低四位值就得到了十进制数。...,个位又对应一个BCD,恰巧这个BCD对应的十进制数就是十六进制的十位和各位,也就说0x23中的2,对应0010,又对应十进制的2,这样一来,我们做显示的时候,直接把十六进制的BCD除以16,这样就分离出...到此,BCD转换讲完啦,直接手敲进去的,有错的请大家指出,有不懂的可以加微信:dianzi126,大家一起交流学习。

1.8K20

关于BCD的糊涂账,是该偿还啦!

就在刚刚,好友“月亮与六便士”和我讨论了关于BCD的题目。现在想来,上一次接触到它,那是多么久远的事情啦~ 特此小文记录一下。题目如下: 十进制数 9874 转换BCD 数为________。...主要看上面表中9之后的8421 BCD的表示方式。 因此,对于文章中最开始提到的题:**十进制数 9874 转换BCD 数为________**。如果用8421 BCD码表示是这样的。...那举个简单的例子,十进制数37 的二进制是什么?这是不是比转换十进制数64要麻烦些了。...尤其对我们从小就是从学十进制数字长大的人类来说,十六进制数“0X25”转换位十进制数“37”,必须按权展开算一遍 有没有能直接一看就懂的方法呢?有!8421 BCD就是干这个的。...微机的内部电路将十六进制数“25”转换为“37”。该寄存器存储的二进制数为“0011 0111”。如果这个二进制按照十六进制来看,对应的是十六进制数0X37”。

25220

基于Verilog HDL的二进制转BCD实现

但是这样未免会耗费太多资源,使用移位加3算法就可以实现二进制到BCD之间的转换。        BCD(Binary-Coded Decimal‎)亦称二进十进数或二-十进制代码。...这里为什么大于四,BCD是四位二进制数表示一个十进制数的一位,如果这以为大于4,比如5,4’b0101,下一次移位后变成了4’b1010,BCD中是没有4’b1010的,所以要加6,向高位进位。...(4’b0011左移后也是4’b0110,移位前和移位后都是一样的对BCD的位数进行修正)。 为什么用左移的方法呢?这是因为二进制数和十进制数之间的位权的关系。...转换完成后输出一个转换完成标志tran_done。 ?        内部的时序我采用了三段式状态机来完成。IDLE状态接收到使能信号,调到移位状态,经过16次移位。...最后将转换完成后的结果输出。 ?

1.8K10

BCD(8421)和整数互转算法的梯形图实现

BCD(Binary Coded Decimal‎)是用4位二进制数来表示1位十进制数中的0~9的编码方法。其中,最常使用到的是8421BCD。...8421是一种有权,其各位的权分别是(从最有效高位开始到最低有效位)8,4,2,1。比如,BCD0x9234(二进制1001 0010 0011 0100)所代表的十进制数为9234。...BCD转整数的程序实现 从BCD的原理可知,对于一个16位的BCD而言,其数据表示范围为0~9999。...整数转BCD的程序实现 整数转BCD的原理同上,只不过各数位对应的加权分别变为了4096,256,16和1。...更多 上述程序是笔者多年前编写的,后来都是直接调用,没有过多思考,在校对此文的过程中,笔者忽然发现按数值区间大小分类讨论的方式完全没有必要,上述程序其实可以简化为: BCD转整数 整数转BCD

1.6K20

「   JS 类型转换 - 隐式转换  」

JS 类型转换 - 隐式转换 强制转换也叫作显式转换 隐式转换叫做自动类型转换 简单规则介绍 如果一个操作数是布尔值,那么在比较之前相等性之前 会将其转换成number类型 例如:ture == 1...如果一个数是字符串,另一个操作数是数值,那么在比较时也会将这个字符串转换成数值 如果是一个不合法的数值则结果NaN 我们知道NaN和任何内容比较都不相等,包括自身 同时 如果在进行比较是 一个操作数是NaN...undefined也会无视规则直接返回true null == undefined 也会无视规则直接返回TRUE NaN == NaN 也会无视规则直接返回false === 全等号在进行比较的时候 不会转换类型...// 结果 NAN console.log (1+null); //结果为 1 console.log(true == 1); // true 简单来说就是,在比较运算过程中,基本数据类型会隐式转换...,复杂数据类型不能隐式转换,但会使用toString()转成字符串,然后再进行隐式转换

5.2K20

玩转js类型转换

undefined 与 null ,和所有其他值比较的结果都是false,他们之间==成立 ToPrimitive是指转换js内部的原始值,如果是非原始值则转为原始值,调用valueOf()和toString...[]就是false 2.2 等号两边对比 我们知道,在比较类型的时候,先会进行各种各样的类型转换。 从开头的表格可以看见,他们比较的时候都是先转换为数字类型。...事实上是可以的,就是因为在==比较的情况下,会进行类型的隐式转换。...那么new出来的结果肯定不是简简单单的一个object,不然就是被转换成'[object Object]',但是你又不得不以object类型出现,那就只能魔改隐式转换用到的toString和valueOf...v2) { //Cash.add return v1 + v2 } } END 然而,实际项目中两个数据作比较的时候,我们尽量不要写甚至完全不要写两个等号,应该写三个等号,而且js

5.5K10
领券