BCD与十进制转换的算法

常用算法的计算复杂度 凸优化中常用算法的计算复杂度线性规划(LP)逐次凸逼近(SCA)块坐标下降(BCD)二分法 (Bisection)穷举法参考文献 线性规划(LP) As explained in [12], the complexity of a standard linear problem is of order O(a2b)\mathcal{O} (a^2b)O(a2b), where aaa is the number of variables and bbb is the number of constrain 阅读详情

BCD是指用二进制来表示十进制数的编码,即用4位二进制来表示一个十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数(有别于8421码)。

为了表示两个十进制数(十位、个位),需要两个BCD码(8位),可以用char 类型来储存,比如:

BCD码:0x99 (153),共八位,储存在char 类型中,它对应的二进制为1001 1001.该BCD码要转换成十进制数99。

   算法应该是这样子的:

    153 - 99= 54

   54 - 9*N = 0 ----> N = 6

(这些只是验证,知道了算法再去推,感觉有点奇怪,现在还是弄不明白,不过这种算法确实很简洁!)

--------------------神奇的分割线---------------------

这算法有点明白了。十进制数是指逢十进一,而十六进制则是逢十六进一,它们之间每次进位差了6,因此要把一个BCD转换成一个十进制的数,先算清多进位的位数,比如0x99,它多进位9次(十位数),那它就多加了9次6,要转换成十进制,只需用0x99 - 9*6 即可。

很巧妙的算法,利用了十进制与十六进制之间的本质区别。

-----------------------------------------------

static unsigned char bcd_decimal(unsigned char bcd)
{
return bcd-(bcd >> 4)*6;
}

static unsigned char decimal_bcd(unsigned char decimal)
{
return (unsigned char) (decimal+(decimal / 10)*6);
}

BCD码的介绍与十进制数间代码转换 BCD码(Binary-Coded Decimal‎)称为二进码,用4位二进制数来表示1位十进制数中的0~9这10个数码。是十进代码中最常用的一种。在这种编码方式中,每一位二值代码的“1”都代表一个固定数值。将每位“1”所代表的 二进制数加起来就可以得到它所代表的十进制数字。因为代码中从左至右看每一位“1”分别代表数字“8”“4”“2”“1”,故得名8421码。其中每一位 “1”代表的十进制数称为这一位的权。因为每位的权都是固定不变的,所以8421码是恒权码。 阅读详情

相关推荐

别再为OpenBCI_GUI安装发愁了!保姆级教程带你从Processing配置到成功运行(附常见错误解决)

本文提供了一份详细的OpenBCI_GUI安装教程,涵盖从Processing配置到成功运行的全过程,特别针对常见错误提供了解决方案。通过环境搭建、软件依赖安装、源码处理及首次运行实战,帮助用户高效完成数据可视化工具的部署与使用。

weixin_28366475的博客 267

算法相关

算法相关。借鉴各种资料以及《数据结构与算法经典问题解析java语言描述》。以前有个大佬说,语言只是工具。 大O:复杂度的上界,一般考虑这个,因为现实很残酷,只能考虑最差情况。 Ω:复杂度的下界,没什么意义。 Θ:上面两者的平均值。 递归: 递归需要有终止条件,这里就可以很好的理解栈的大小决定了函数循环引用的深度这个问题了(Xss)。当递归调用的深度太深了,就算没有栈溢出也会占用很...

huu567的博客 494

POVME3口袋体积计算:从.ini配置到实战解析

本文详细解析了POVME3口袋体积计算工具,从核心原理、环境准备到实战应用。重点剖析了控制计算行为的.ini配置文件,包括如何定义口袋区域、精修范围及锁定目标,并提供了固定坐标与配体引导两种实战策略,帮助研究人员从分子动力学轨迹中量化分析蛋白质结合口袋的动态变化。

weixin_29043895的博客 536

C语言:十进制、BCD码互换

最近写单片机 RTC 日期、时间配置,需要实现十进制、BCD码互换,将示例Demo分享给各位朋友~

不脱发的程序猿 4万+

Lmbench测试集 --- 延迟测试工具lat_mem_rd

lmbench测试集简介 以及 lat_mem_rd延迟测试工具: 如何测试、测试结果、源码分析

MonologueYY的博客 1万+

层层剥开Allegro skill--快速抓取并写入Allegro软件【呕血创作,转载注明】

Allegro skill eda pcb

qq_36492361的博客 1251

BCD码与十进制的互相转换

看了很多文章都没搞懂,发现自己是对BCD码的定义没搞懂,所以看完这个你也一定懂了。

m0_51664996的博客 4762

别再用默认参数了!手把手教你用2P2Z补偿网络优化Buck电源的动态性能

本文详细介绍了如何通过2P2Z补偿网络优化Buck电源的动态性能,解决默认参数下的负载阶跃响应问题。从频域分析到元件选型,再到实测验证,手把手教你提升相位裕度,显著降低超调量和稳定时间,适用于DCDC和开关电源设计。

weixin_33657398的博客 256

十进制与BCD码转换的算法

手头上在做的项目需要用到ds1302实时时钟,ds1302读出来的数据是BCD码,需要转换,写入也是。 BCD码 BCD是指用二进制来表示十进制数的编码,即用4位二进制来表示一位十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数。 比如: BCD码:0x99(153),该BCD码转换成十进制是99. 算法原理 十进制是逢十进一,而十六进制是逢...

征心的博客 4万+

利用python爬取东方财富网股吧评论并进行情感分析(一)

利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直

YMG521000的博客 1万+

爬取信用中国里面的行政处罚

result字段名为行政处罚文书号、处罚决定日期、处罚内容、处罚金额、违法事实、处罚机关、公司名称,行政处罚次数。file_path=r'E:\Data analyze\python\行政处罚爬虫/'#路径需要按实际修改。writer = pd.ExcelWriter('统计.xlsx')# 写入Excel文件。src_workbook=file_path+r'行政处罚(名单).xls' #表格名称也要更改。# keyword = input("输入爬取的公司全称必须是全称")

qq_42863025的博客 1674

简述二进制码、十进制码、BCD码、十六进制码转换的算法

二进制码,十进制码,BCD码和十六进制码转换的算法思路

weixin_46424753的博客 3340

Google Earth Engine ——在 GEE 中计算面积含各类要素计算(土地分类为例)

在遥感应用中工作时,许多操作需要计算面积。例如,需要在监督分类后计算每个类所覆盖的面积,或者找出灾害后区域内受影响的面积。计算栅格和矢量的面积在大多数软件包中是一个简单的操作,但在 Google Earth Engine 中以稍微不同的方式完成 - 这可能会让初学者感到困惑。在这篇文章中,我将概述计算矢量和图像面积的方法。我们将涵盖以下主题,从简单到复杂。 特征的面积计算,即矢量数据 图像的面积计算(单类) 按类别计算图像的面积 按区域按类别计算图像的面积 按年按地区按类别计算图像的面积 准备数据

此星光明博客 4024

Python实现十进制整数与BCD码转换

Python实现十进制整数转指定长度BCD码转换,以及BCD码转十进制数

AllErrors的博客 3107

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BCD INT 转换

unsigned long BCDToDec(const unsigned char *bcd, int length) { int tmp; unsigned long dec = 0; for(int i = 0; i < length; i++) { tmp = ((bcd[i] >> 4) & 0x0F) * 10 +

未来软件 4189

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

STM32F4_十进制和BCD码的转换

比方说十进制下的66,66/10=6次,也就是说修正了6次,这里修正次数的意思是,出现一次十六进制下溢出9,就修正一次,(溢出第一次来到10-15,溢出第二次来到20-25,依次类推,总共溢出了6次,就是这个道理),所以需要加上6*6=36,所以最终的BCD码为66+36=102;如果相加的值位于20-25之间,则需要修正2次,也就是加上2*6=12;:二进制是逢二进一,十进制是逢十进一,十六进制是逢十六进一,它们之间每次都差6,所以一个十进制想要转换成BCD码,必须先要算清楚进了几次位;

light_2025的博客 2339

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

PTA-BCD解密(基础编程题)

PAT-BCD解密(基础编程题目)PAT-BCD解密输入格式:输出格式:输入样例:输出样例:解析: PAT-BCD解密 BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了! 现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。 输入格式: 输入在一行中

s_yang_的博客 3073

c++ 十进制、十六进制和BCD的相互转换

#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace std; ///////////////////////////////////////////////////// // //功能:二进制取反 // //输入:const...

BeanGo的博客 1112

十进制转BCD,十进制转化为十六进制

十进制转BCD unsigned char num_To_bcd(unsigned char num) { unsigned char a, b, bcd; a = (num % 10) & 0x0f; b = ((num / 10) << 4) & 0xf0; bcd = a | b; return bcd; } BCD转十进制 unsign...

电子第一课,点亮LED;第二课,点亮钽电容;第三课,点亮MOS管 596

FPGA进制数与BCD码转换

FPGA进制数与BCD码转换 4位二进制转换成两个BCD码 二-十进制编码(BCD码)是把十进制的0~9这个十个数用二位二进制数(0000 1001)代表的代码。我们也可以用四位二进制数表示成两个BCD码。 module bit4BCD(bcd,bcd0,bcd1); input [3:0] bcd; output reg[3:0] bcd0,bcd1; always @(bcd) begin {bcd0,bcd1}=8'h0; if(bcd<10)

qq_44798568的博客 2487

BCD码:8421码

BCD码中的8421码的完整理解及编码解码过程

weixin_57915039的博客 4万+

2-4. BCD解密(10)

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了! 现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。 输入格式: 输入在一行中给

rabbit8848的专栏 4489

BCD解密

BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了! 现在,你的程序要读入这个错误的十进制数,然后输出正确的十进制数。提示:你可以把18转换回0x12,然后再转换回12。 输入格式: 输入在一行中给...

qq_40711877的博客 844
上一篇: 【PSI/SI学习系列】2.PSI/SI深入学习1——预备知识
下一篇: Android init.rc文件浅析
simonjay2007
博客等级 码龄17年 104粉丝 112原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值