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

解析BCD

近日有朋友问起BCD,在此我们就来说说这BCD。为什么会有BCD?...最常用的BCD称为8421BCD,8.4.2.1 分别是4位二进数的位取值。...具体编程函数如下,函数中参数val是一个字节数,那么此BCD是两位的BCD,即高四位是一个值、低四位是一个值,所以将高四位乘以10加上低四位值就得到了十进制数。...,这里我们用个小技巧,大家看上面的编码的对应关系,四位的BCD,刚好对应一个8位数的十六进制中的四位,比如十六进制0x23,对应的BCD是0010 0011,也就说十六进制的十位对应一个4位的BCD...,个位又对应一个BCD,恰巧这个BCD对应的十进制数就是十六进制的十位和各位,也就说0x23中的2,对应0010,又对应十进制的2,这样一来,我们做显示的时候,直接把十六进制的BCD除以16,这样就分离出

1.9K20

BCD概述

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

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

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

C语言:十进制、BCD互换

一个四位的BCD不能够表达十进制的两位数,因此当数字大于九时,我们需要用八位BCD来表示。高位只需要逢九进一即可。...例如,十进制99进位了99/10=9次,每次进位和十六进制进位相比差6,所以一共差了9×6=54,即BCD为:99+54=153(十六进制:0X99)。BCD转化成十进制也一样原理。...1、复杂版 十进制转换为BCD,代码如下所示: int decimal_bcd_code(int decimal) { int sum = 0; //sum返回的BCD for (int i...{ return (bcd + (bcd/10) * 6); } BCD转换为十进制,代码如下所示: int decimal_bcd_code(int decimal) { return...(decimal - (decimal>>4) * 6); } ---- 参考资料: 1、十进制与BCD转换的算法 2、十进制转BCD在线工具

1.8K30

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

一文攻破BCD转换与各进制转换 0.导语 最近做的项目中时刻看到时间戳用BCD[xx]来定义,那么针对这种定义,究竟代表什么意思,如何来使用呢,本节来阐述BCD与其他进制转换以及在笔试当中,会碰到进制转换问题...1.BCD BCD(Binary-Coded Decimal‎)亦称二进十进数或二-十进制代码。 用4位二进制数来表示1位十进制数中的0~9这10个数码。...相对于一般的浮点式记数法,采用BCD,既可保存数值的精确度,又可免去使电脑作浮点运算时所耗费的时间。 此外,对于其他需要高精确度的计算,BCD编码亦很常用。...BCD的运算规则:BCD是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD传送给运算器进行运算时,其结果需要修正。...与其他进制的转化以及十进制转其他进制、其他进制转十进制实现等,在项目开发中BCD使用非常广,后面来仔细说明,欢迎订阅公众号光城。

3.8K20

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

BCD概念 BCD(Binary-Coded Decimal)是二进制编码的十进制数的缩写,BCD用4位二进制数表示一位十进制数。...BCD可分为有权和无权两类:有权BCD有8421、2421、5421,其中8421是最常用的BCD。无权BCD有余3,余3循环等。...8421 BCD是最基本和最常用的BCD,本文主要说的也是它。 BCD码表示方式 我们知道4位自然二进制各自的权值是8,4,2,1。...由于每一位都有权值,故而把 8421 BCD归为有权BCD。 我们知道4位二进制可以表示 0 到 15,正好能表示十六进制中的一位。因此,我们称“8421 BCD借用十六进制形式表示”。...为什么出现 8421 BCD 都已经有了十六进制了,为什么还弄出个8421 BCD呢?小二哥认为是为了方便看清。

25420

基于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的位数进行修正)。 为什么用左移的方法呢?这是因为二进制数和十进制数之间的位权的关系。...ninghechuan@foxmail.com 6 // Blogs : http://www.cnblogs.com/ninghechuan/ 7 // File Name : Bin_BCD.v...******************************************************************************* 22 23 module Bin_BCD

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

Linux场 - Linux内核月报(2020年11月)

关于Linux内核月报 LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。...限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅场社区添砖加瓦。...本期月报主要贡献人员: 张健、廖威雄、chenwei、夏天 往期链接: Linux场 - Linux内核月报(2020年06月) Linux场 - Linux内核月报(2020年07月)...Linux场 - Linux内核月报(2020年08月) Linux场 - Linux内核月报(2020年09月) Linux场 - Linux内核月报(2020年10月) 阅场征稿...Linux场征集Linux工程师一线研发心得;工程师、高校学生老师、科研院所研研究人员对Linux某一技术要点深入分析的稿件。

1.1K20

Linux场 - Linux内核月报(2020年08月)

关于Linux内核月报 LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。...限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅场社区添砖加瓦。...其想法是在操作中添加一些限制(sqe操作和标志位,注册操作),这样能够允许不受信任的应用和用户安全的使用iouring队列。...5.5 fs:新增支持读写的Linux NTFSWindow有几个广为流传的文件系统,分别是Fat32、NTFS、exFAT,但因为种种原因,在Linux平台上长期以来都没做到完美支持。...Linux在很早之前就支持vfat(fat32)的读写了,在前段时间也开源了exFAT的源码,唯独Linux上NTFS只能读不能完美支持写数据。终于,支持读写的 Linux NTFS 要来了。

1.4K92

Linux场 - Linux内核月报(2020年07月)

关于Linux内核月报 LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。...限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅场社区添砖加瓦。...本期月报(总第2期)主要贡献人员: 陈玮、张健、廖威雄 (月报的完善和专业,离不开大牛们的持续贡献,欢迎更多大牛加入月报贡献团队) 第一期链接: Linux场 - Linux内核月报(2020年...在EIF的头部还会添加一些元数据包括magic number,EIF版本信息,镜像大小和CRC校验。 整个Enclave镜像(EIF),包括内核和ramdisk,会做hash计算。...https://github.com/luxis1999/linux-vsva.git: vsva-linux-5.6-rc6 对应的QEMU补丁系列可以在以下链接找到。

1.5K20

Linux场 - Linux内核月报(2020年12月)

关于Linux内核月报 LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。...本期月报主要贡献人员: 张健、廖威雄、chenwei、夏天 往期链接: Linux场 - Linux内核月报(2020年06月) Linux场 - Linux内核月报(2020年07月)...Linux场 - Linux内核月报(2020年08月) Linux场 - Linux内核月报(2020年09月) Linux场 - Linux内核月报(2020年10月) Linux场...- Linux内核月报(2020年11月) 阅场征稿 Linux场征集Linux工程师一线研发心得;工程师、高校学生老师、科研院所研研究人员对Linux某一技术要点深入分析的稿件。...(END) 更多精彩,尽在"Linux场",扫描下方二维关注

1.6K60

Linux场 - Linux内核月报(2020年06月)

关于Linux内核月报 LinuxLinux场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。...限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅场社区添砖加瓦。...体系结构 1.1 MTE(Memory Tagging Extension) 近期Linux社区在大量讨论ARM v8.4和v8.5的扩展特性,例如v8.4的嵌套虚拟化和v8.5的MTE(Memory...对用户来说,可以使用 fscrypt 的 Linux 文件系统加密 工具来设置加密的属性。目前来看,patchset 使得内联加密支持 f2fs 和 ext4 文件系统以及 UFS 设备。...5.6 ptq: Per Thread Queues 该patch涉及Linux内核网卡多队列技术的增强。

1.3K40
领券