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

BCD概述

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

20210

解析BCD

由于日常生活,人们最熟悉数制是十进制,但计算机内部通常采用2进制和十六进制形式读写,专业人员理解没问题,但是我们大众要理解2进制,16进制就有些困难了,因此专门规定了一种二进制十进制,称为BCD...具体编程函数如下,函数参数val是一个字节数,那么此BCD是两位BCD,即高四位是一个值、低四位是一个值,所以将高四位乘以10加上低四位值就得到了十进制数。...其实在实际运用,我们也没必要做这样运算,直接用BCD十六进制数就好,比如在时钟芯片DS1302运用,从DS1302读取到时间数据就是BCD,那我们现实出来,人们习惯看到都是十进制数...,这里我们用个小技巧,大家看上面的编码对应关系,四位BCD,刚好对应一个8位数十六进制四位,比如十六进制0x23,对应BCD是0010 0011,也就说十六进制十位对应一个4位BCD...,个位又对应一个BCD,恰巧这个BCD对应十进制数就是十六进制十位和各位,也就说0x232,对应0010,又对应十进制2,这样一来,我们做显示时候,直接把十六进制BCD除以16,这样就分离出

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

    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分离出来然后左移...4位乘上一个10 在加上 个位数字即可。...十进制转BCD 思想:将这个十进制数字用二进制表示,高4位表示数字是多少 * 10再加上低四位表示 数字,C程序如下: #define BCD_to_Decimal(bcd) ((((bcd

    1.5K10

    8421 BCD 加减校正

    8421是一种常见BCD(Binary-Coded Decimal),它用4个二进制位表示1个十进制位: 0000 0001 0010 0011 0100 0101 0110 0111 1000...5 - 0101 15 - 0001 0101 在对8421进行加减操作时候可能产生无意义值如:1011、1100,这时候就需要进行校正. 8421加法校正 举例:17 与 18 相加...这是一个错误答案,因为8421里1111没有对应十进制 校正方法 当低4位相加结果大于9时候,会产生进位,但对于4位二进制位应当大于15时才产生进位,需要对低4位加上0110也即是6来人为制造一个进位...有了上面加法校正基础,我们可以类推出减法校正 举例:17 与 8 相减 8421 0 0 0 1 0 1 1 1 (17) - 0 0 0 0 1 0 0 0 (8) ---...结果错误,8421没有1111对应十进制 校正方法 当低4位相减,高4位产生借位时,借来是16不是10,需要对低4位减上0110也即是6来人为制造一个准确借位 0 0 0 0 1 1

    1.5K20

    C语言:十进制、BCD互换

    目录 1、复杂版 2、简易版 ---- 最近写单片机 RTC 日期、时间配置,需要实现十进制、BCD互换,将示例Demo分享给各位朋友: BCD是指用二进制来表示十进制数编码,即:用4位二进制来表示一位十进制数...一个四位BCD不能够表达十进制两位数,因此当数字大于九时,我们需要用八位BCD来表示。高位只需要逢九进一即可。...十进制是逢十进一,而十六进制是逢十六进一,它们之间每次进位差6,所以一个十进制数要转换成BCD,要先算清多进位位数。...1、复杂版 十进制转换为BCD,代码如下所示: int decimal_bcd_code(int decimal) { int sum = 0; //sum返回BCD for (int i...(decimal - (decimal>>4) * 6); } ---- 参考资料: 1、十进制与BCD转换算法 2、十进制转BCD在线工具

    2K30

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

    BCD可分为有权和无权两类:有权BCD有8421、2421、5421,其中8421是最常用BCD。无权BCD有余3,余3循环等。...由于每一位都有权值,故而把 8421 BCD归为有权BCD。 我们知道4位二进制可以表示 0 到 15,正好能表示十六进制一位。因此,我们称“8421 BCD借用十六进制形式表示”。...8421 BCD只选用了四位二进制前10组代码,即用0000~1001分别代表它所对应十进制数,余下六组代码不用,即BCD不能使用十六进制A~F(1010~1111)这6个数字。...每4个二进制位为一组,表示一个十进制数! 主要看上面表9之后8421 BCD表示方式。 因此,对于文章中最开始提到题:**十进制数 9874 转换成 BCD 数为________**。...如果用8421 BCD码表示是这样。 0(符号位) 1001 1000 0111 0100 第一位是符号位,我们不用管。但答案没有这样二进制表示。而是用类似十进制方式表示,并用H区分。

    44520

    基于Verilog HDL二进制转BCD实现

    在数字电路数据都是用二进制形式存储,要想显示就需要进行转换,对于一个两位数值,对10取除可以得到其十位数值,对10取余可以得到个位数值。...对于Verilog来说它标准是支持除法和取余运算,综合器也会有IP可以进行除法运算。但是这样未免会耗费太多资源,使用移位加3算法就可以实现二进制到BCD之间转换。       ...BCD(Binary-Coded Decimal‎)亦称二进十进数或二-十进制代码。用4位二进制数来表示1位十进制数0~9这10个数码。       ...这里为什么大于四,BCD是四位二进制数表示一个十进制数一位,如果这以为大于4,比如5,4’b0101,下一次移位后变成了4’b1010,BCD是没有4’b1010,所以要加6,向高位进位。...(4’b0011左移后也是4’b0110,移位前和移位后都是一样BCD位数进行修正)。 为什么用左移方法呢?这是因为二进制数和十进制数之间位权关系。

    2K10

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

    BCD(Binary Coded Decimal‎)是用4位二进制数来表示1位十进制数0~9编码方法。其中,最常使用到是8421BCD。...此种编码方法在很多计算机系统及现场仪表较为常见。在工业控制,PLC可能要和现场仪表或计算机交互数据,如果PLC没有BCD和整数互转功能块,那么就需要工程师自行编写转换程序。...BCD转整数程序实现 从BCD原理可知,对于一个16位BCD而言,其数据表示范围为0~9999。...整数转BCD程序实现 整数转BCD原理同上,只不过各数位对应加权分别变为了4096,256,16和1。...更多 上述程序是笔者多年前编写,后来都是直接调用,没有过多思考,在校对此文过程,笔者忽然发现按数值区间大小分类讨论方式完全没有必要,上述程序其实可以简化为: BCD转整数 整数转BCD

    1.8K20

    Java 哈希说明

    文章目录 概念 常用哈希算法 Object对象默认toString()哈希 测试案例 哈希比较探究1 哈希比较探究2 概念 在Java,哈希代表对象特征。...=str2,str1==str3 哈希产生依据:哈希并不是完全唯一,它是一种算法,让同一个类对象按照自己不同特征尽量有不同哈希,但不表示不同对象哈希完全不同。...也有相同情况,看程序员如何写哈希算法。 常用哈希算法 1:Object类hashCode.返回对象内存地址经过处理后结构,由于每个对象内存地址都不一样,所以哈希也不一样。...由此可见,2个一样大小Integer对象,返回哈希也一样。 Object对象默认toString()哈希 假如.直接输出一个实例对象,出现一串字符串,代表什么?...你自己写类没有覆盖这个方法的话就是继承Object类这个方法,ObjecttoString()方法实输出格式是这样getClass().getName() + “@” + Integer.toHexString

    57430

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

    一文攻破BCD转换与各进制转换 0.导语 最近做项目中时刻看到时间戳用BCD[xx]来定义,那么针对这种定义,究竟代表什么意思,如何来使用呢,本节来阐述BCD与其他进制转换以及在笔试当中,会碰到进制转换问题...1.BCD BCD(Binary-Coded Decimal‎)亦称二进十进数或二-十进制代码。 用4位二进制数来表示1位十进制数0~9这10个数码。...是一种二进制数字编码形式,用二进制编码十进制代码。 BCD这种编码形式利用了四个位元来储存一个十进制数码,使二进制和十进制之间转换得以快捷进行。...此外,对于其他需要高精确度计算,BCD编码亦很常用。 BCD运算规则:BCD是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理。...与其他进制转化以及十进制转其他进制、其他进制转十进制实现等,在项目开发BCD使用非常广,后面来仔细说明,欢迎订阅公众号光城。

    4.5K20

    数字电路-两个BCD加法运算电路

    ​目录:1、什么是BCD2、8421 BCD加法原理3、BCD加法电路4、元件功能5、BCDVerilog代码前置知识:卡诺图与逻辑代数化简法、数字电路-时序逻辑电路。...1、什么是BCDBinary-Coded Decimal‎缩写BCD,用4位二进制数来表示1位十进制数0~9这10个数码,简称BCD。日常所说BCD大都是指8421 BCD形式。...1000140100701112001050101810003001160110910012、8421 BCD加法原理BCD0~9可以用四位二进制数0000~1001表示,而1010~1111这6...3、BCD加法电路电路由4位二进制超前进位全加器、进位控制电路、译码器74LS47N、显示电路共4个部分组成。其部分电路如下图所示,仿真原文件下载移步:两个BCD加法运算。...4、元件功能5、BCDVerilog代码​ module bcd(cout,sum,ina,inb,cin); input cin; input [3:0] ina,inb; output

    21410

    2023.1最新IntelliJ IDEA激活Java激活(持续更新

    IntelliJ IDEA激活更新日期更新日期:2023.01.06IntelliJ IDEA激活如有失效/过期,评论区或主页有最新(免费)KOMLIYUJ56-eyJsaWNlbnNlSWQiOiJXRTY0UkZD...UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onDIdea激活使用说明...IDEA翻译插件说明有了这个插件之后,你再也不用在编码时候打开浏览器查找某个单词怎么拼写、某句英文注释什么意思了。...这个插件(貌似是国人开发,很赞)。 使用方法很简单!...选中你要翻译单词或者句子,使用快捷键 command+ctrl+u(mac) / shift+ctrl+y(win/linux) (如果你忘记了快捷的话,鼠标右键操作即可!)?

    15.9K10

    java字节

    我们都知道Java字节是JVM所使用指令集。java字节可以分为如下几类: 操作数栈   Java 方法栈桢分为操作数栈和局部变量区。...通常来说,程序需要将变量从局部变量区加载至操作数栈,进行一番运算之后再存储回局部变量区。操作数栈指令有如下: dup 复制栈顶元素(常用于复制 new 指令所生成未经初始化引用。)...Idc加载常量池中例子 将局部变量区值加载到操作数栈指令   Java 虚拟机将局部变量区当成一个数组,依次存放 this 指针(仅非静态方法),所传入参数,以及字节局部变量。...存储在局部变量区值,通常需要加载至操作数栈,方能进行计算,得到计算结果后再存储至局部变量数组。...表求含义为:将局部变量数组第 M 个单元 int 值增加 N,常用于 for 循环中自增量更新。字节如下图所示: ?

    1.5K20

    java 操作

    操作介绍 我们都知在Java我们类会被编译成字节然后放到虚拟机中去执行,字节里面的内容其实我们也是可以去“阅读”,方法就是通过 jdk自带工具翻译成操作。...在操作我们能看到一些我们平时看不到关于java秘密。 Java虚拟机指令由一个字节长度数字以及跟随其后零至多个代表此操作所需参数构成。即:Java指令 = 操作 + 操作数。...Java虚拟机本身是采用面向操作数栈而不是寄存器架构,所以大多数指令都不包含操作数,只有一个操作。通过阅读操作我们能直观看到一些方法执行过程。...操作阅读指南 通过命令行窗口输出内容分为以下几个部分: Classfile 是一些类信息, Constant pool 是编译时常量池,Constant pool 我们能看到方法信息、变量信息、...数据类型相关 iload指令用于从局部变量表中加载int型数据到操作数栈; fload指令则是从局部变量表中加载float类型数据到操作数栈; i代表int类型,l代表long类型,s代表short

    40720

    Java字节简介

    ,而jvm要运行java代码首先要做就是加载字节,也就是.java文件经过编译变成.class文件。...1.魔数:如图所示,cafebabe就是java字节魔术,这个数字是用java之父,詹姆斯高斯林指定,其含义 就是java咖啡bean吧。...2.版本号:因为java有不同版本,所以在java字节也有标记。0000 0034两个字节就表示java1.8版本。...在字节十六进制关系如下图所示。 (5) 当前类名 访问标志后两个字节,描述是当前类全限定名。这两个字节保存值为常量池中索引值,根据索引值就能在常量池中找到这个类全限定名。..." 总结:java通过编译将源文件编译为字节文件,其字节中方法执行和常量池和代码区有很大联系。

    1.1K10

    圣经校验

    于是犹太人发明了一种类似于今天计算机和通信中所应用校验方法。 他们把每一个希伯来字母对应一个数字,这样把每行文字对应数字加起来便得到一个特殊数字,这个数字便成为了这一行校验。...同样办法,对于每一列也是这样处理,把每一列文字对应数字加起来,就得到了这一列校验。...当犹太学者抄写完一页《圣经》时,他们需要把每一行和每一列文字对应数字加起来,得到行和列校验,如果每一行和每一列校验和原《圣经》校验一致,则说明抄写正确,没有出现错误文字。...如果发现某一行校验和原《圣经》校验不一致,则说明该行文字中和原《圣经》不一致,出现了抄写错误情况。但是这一行有很多文字,到底是哪个文字抄写错误了,我们暂时还不得而知。...当发现某行校验不一致时,这时去检查这一行所有的列检验,肯定会有一列校验和原《圣经》一列校验不一致情况,这样,通过行和列双重校验,可以很快定位到抄写错误文字,然后和原《圣经》对比改正即可

    94120
    领券