首页
学习
活动
专区
工具
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.9K20

BCD概述

基本介绍BCD的英文全称是Binary-Coded Decimal‎,简称BCD,按字面解释是二进制二进制十进制代码,是一种二进制的数字编码形式。...通常用4位二进制代码对十进制数字符号进行编码,在这里会主要介绍的几种常用BCD就是8421,2421和余3。...疑问:BCD是用二进制数对十进制数编码,明明可以直接把十进制数转化为二进制数,为什么非要搞一个四位对一位的BCD?...84218421是最基本最常用的BCD,是十进制代码中最常用的一种。在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的二进制数加起来就可以得到它所代表的十进制数字。...余三余三(余3)是由 8421BCD加上0011形成的一种无权,由于它的每个字符编码比相应的8421多3,故称为余三

12910

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

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

25420

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

基于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

FPGA基础知识极简教程(10)二进制到BCD转换算法

尽管如此,存在这样一个问题,我们在设计计数器的时候,习惯于直接设计二进制计数器,这样的计数器计数结果是二进制的,我们需要将其转换BCD,这就是今天我们需要讨论的问题。...你可能会说,可以设计一个BCD计数器,之后转换成二进制! 呃,你认为这个工作量会小一点吗? 最后,我认为这个算法还提供了一个思想,如何处理Verilog中的循环问题?...正文 --- 快速认识 为了快速了解这个算法,我觉得先看一个小例子比较合适: 我们假设的二进制数为8位(11110011),如何将其转换BCD呢?...有了这些先验知识,我们来看看如何转换的! 首先,先将BCD计数器清零,之后将二进制数和BCD计数器统统左移,二进制数移出来的最高位放到BCD计数器的最低位,如下表所示!...计数器的十、分以及个位是否大于4,如果任何一位(4bit)大于4,则对其加3,之后继续移位,如此下去,直到移位次数为二进制数的位数之后,停止移位,此时得到的BCD计数值便是转换后的值。

87400

FPGA基础知识极简教程(10)二进制到BCD转换算法

尽管如此,存在这样一个问题,我们在设计计数器的时候,习惯于直接设计二进制计数器,这样的计数器计数结果是二进制的,我们需要将其转换BCD,这就是今天我们需要讨论的问题。...你可能会说,可以设计一个BCD计数器,之后转换成二进制!呃,你认为这个工作量会小一点吗? 最后,我认为这个算法还提供了一个思想,如何处理Verilog中的循环问题?...正文 ---- 快速认识 为了快速了解这个算法,我觉得先看一个小例子比较合适:我们假设的二进制数为8位(11110011),如何将其转换BCD呢?...有了这些先验知识,我们来看看如何转换的! 首先,先将BCD计数器清零,之后将二进制数和BCD计数器统统左移,二进制数移出来的最高位放到BCD计数器的最低位,如下表所示! ?...每一次移位之后都判断下,BCD计数器的十、分以及个位是否大于4,如果任何一位(4bit)大于4,则对其加3,之后继续移位,如此下去,直到移位次数为二进制数的位数之后,停止移位,此时得到的BCD计数值便是转换后的值

73610

格雷与二进制转换

格雷,又叫循环二进制或反射二进制,格雷是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。...格雷的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。常用的二进制数与格雷间的转换关系如下表: ?...二进制转换成二进制格雷 二进制转换成二进制格雷,其法则是保留二进制的最高位作为格雷的最高位,而次高位格雷为二进制的高位与次高位相异或,而格雷其余各位与次高位的求法相类似。 ?...    return x^(x>>1); }   int main() {     int x;     cin>>x;     cout<<D2G(x);     //注意输入与输出均为十进制 } 格雷转换成二进制...二进制格雷转换成二进制,其法则是保留格雷的最高位作为自然二进制的最高位,而次高位自然二进制为高位自然二进制与次高位格雷相异或,而自然二进制的其余各位与次高位自然二进制的求法相类似。

1.6K20

零代实现EDI标准报文转换

实施人员只需要有一些基本的代码基础和思维,就可以在知行EDI系统上实现零代完成EDI标准报文的格式转换。在知行之桥中,几乎所有的文件格式转换都是基于XML格式类型进行转换的。...接下来,我们以接收EDI订单为例,通过知行之桥EDI平台完成零代报文转换,将EDI报文转换成XML文件。知行之桥的EDI端口,可以初步实现EDI订单报文和标准XML格式的自动转换。...可以通过此端口将EDI报文转换成标准XML文件,也可以将XML文件转换成EDI报文,此处我们需要使用到端口的“EDI转换为XML”功能。...知行之桥零代EDI平台,大大减少了客户自主实施的复杂度,降低了自主实施的入场条件,给常适用于成本控制比较严格,或是EDI对接需求较多,有强烈自主实施意愿的企业。...以上就是关于知行之桥EDI系统零代实现EDI标准报文转换的内容。更多 EDI 信息,请参阅: EDI 是什么?

32010
领券