技术文档

单片机十进制转十六进制 C语言的BCD 码转十进制(十六进制HEX)程序

小编 2024-11-25 技术文档 23 0

C语言的BCD 码转十进制(十六进制HEX)程序

说明:本程序分别列举了单字节BCD码转换为char型数据;2字节BCD码转换为int型数据;4字节bcd码转换为long int型数据的的方法。

unsigned char ucBCDdata[10] = {0x11,0x22,0x33,0x44,0x55,0x55,0x66,0x77};

unsigned char ucHEXdata11 = 0,ucHEXdata[10] = {0};

unsigned int uiHEXdata = 0,uiHEXdata11 = 0;

unsigned long int ulHEXdata = 0;

//1、现实中十六进制数和十进制数不可以直接相加,如果是在电脑上的话是可以的,因为不管

//何种进制数在电脑上都是以二进制的形式表示的,所以在电脑编写程序时是可以相加的。

//C语言程序中,十进制和十六进制实际是互通的,

//单字节BCD码转十进制

//高半字节=BCD码字节除16的商,低半字节=BCD码字节除16的余数

ucHEXdata[0] = (ucBCDdata[0]>>4)*10 +(0xf & ucBCDdata[0]);

ucHEXdata11 = ucHEXdata[0];

//2字节BCD码转换为整数

//先将2个字节的BCD码分别转换为十进制,然后高字节*100+低字节=整数

ucHEXdata[0] = (ucBCDdata[0]>>4)*10 +(0xf & ucBCDdata[0]);

ucHEXdata[1] = (ucBCDdata[1]>>4)*10 +(0xf & ucBCDdata[1]);

uiHEXdata = ucHEXdata[1]*100 + ucHEXdata[0];

//4字节BCD码转换为整数

//先将4个字节的BCD码分别转换为十进制,按照十进制数的整合方式整合为长整形

ucHEXdata[0] = (ucBCDdata[0]>>4)*10 +(0xf & ucBCDdata[0]);

ucHEXdata[1] = (ucBCDdata[1]>>4)*10 +(0xf & ucBCDdata[1]);

ucHEXdata[2] = (ucBCDdata[2]>>4)*10 +(0xf & ucBCDdata[2]);

ucHEXdata[3] = (ucBCDdata[3]>>4)*10 +(0xf & ucBCDdata[3]);

ulHEXdata = ((unsigned long int)ucHEXdata[3]*1000000)

+((unsigned long int)ucHEXdata[2]*10000)

+((unsigned long int)ucHEXdata[1]*100) + ucHEXdata[0];

单片机C语言开发离不开它--秒懂二进制和十六进制

单片机C语言开发离不开它--秒懂二进制和十六进制

作为单片机爱好者,入门学习单片机编程一定要学会进制的基本概念,常见的有(二进制、八进制、十进制、十六进制),今天于晓超带大家入门一下单片机C语言编程的二进制和十六进制(技术文章阅读量惨淡,希望大家能够点赞收藏加转发,感谢)。

进制顾名思义,进位计数制是人们定义的进位技术方法,这句话可能比较难理解,以十进制为例,逢十进一,(1、2、3....10--1、2、3....10)由此大家应该也可以理解二进制和十六进制了,二进制就是逢二进一,十六进制逢十六进一,记住这是进位运算的方法。

二进制的应用

二进制在单片机开发过程中必不可少,可以把他理解为高低电平

如图,在单片机时序图中常常这样表示。0和1代表着信息,那么很多的0和1组成的就是一串信息,0和1的不同排列所承载的信息也不同,但是在实际应用过程中二进制承载的信息过多时不易使用和记忆,因此在单片机C语言开发中常常将一串二进制用十六进制来替代。

十六进制的应用

十六进制满十六进一,那么大于10的用什么来表示尼?在十六进制中大于10的数用ABCD等,英文大写来代替,0X01、0XAA这都是16进制,对十六进制和二进制进行相互转换是单片机C语言开发中必备的技能。

进制转换

二进制和十六进制的转换,在开发过程中可以借助计算机自带的计算器进行转换,但是自己熟练掌握相互转换会在开发过程中,节约很多时间而且有利于自身的理解,如何进行相互转换如图所示!

相关问答

怎么将 单片机 接收到的 十六进制 数转为 十进制 ?

你说的数字带小数点的,叫浮点数。小数点的数据用十六进制表示用4个字节。如果小数部分都是0,则可以用整数表示。例如:用长整型表示。longdat;//用于...你说...

为什么 单片机 里面都是 十六进制 ?

首先,赋几进制的值对单片机来说是一样的。因为经过编译之后都是二进制,单片机也只认识二进制。赋值时使用16进制是为了我们容易看。因为单片机的寄存器很多...

单片机 编程填空会的快来1.RAM中45H单元内存有一个 十六进制 ...

单片机编程填空会的快来1.RAM中45H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R3中.ORG0000HMOVA,__...

单片机 乘法指令:假定(A)=50H(B)=0A0H.执行指令MULAB后,累加...

[最佳回答]50H*0A0H=320H你可以把十六进制都换成十进制来计算!即80*10=800换成十六进制就是320H执行指令之后,A=20H,B=03H,(结果高八位放在寄存器B,低八...

16 进制转 bcd码?

63÷10=6……3即商是6,余数是如果将商乘以16再加上余数,就是:6×16+3=99,其16进制数就是63H,即是十进制数63(16进制为3FH)的BCD码为63H。如果在单片机中,...6.....

单片机 十六进制 怎么表示?

单片机的数据(或者是C程序)里面经常出现一些字母(例如0xff)表示一个字节的数据,你如果想表示两个字节,也就是16位数据的时候就直在0x后跟四个字母(16进制...

单片机 中,如何将16 进制 转换为ASC码?

每个数字+0x30,每个字母+0x37就成了。举例如下:f的16进制是1111,加0x37即1111+00110111=01000110=0x46;a的16进制是1010,加0x37即1010+...

51 单片机 D的16 进制 是多少?

51单片机D的16进制是0x44。1.这是因为“D”的ASCII码值是十六进制的44。2.在51单片机中,常用的寄存器地址需要使用十六进制来表示,因此对于一些常用的字符,...

单片机 中断如何设置 十六进制 ?

在单片机中,设置中断需要编写中断服务程序,并设置相应的中断向量地址。首先,通过编程将中断控制寄存器设置为使能状态,然后配置中断优先级和触发条件。接着...

51 单片机 汇编程序的二 进制 十进制 十六进制 数怎么表明!-ZO...

二进制10B十进制10或10D十六进制10H十进制就是0到9这是个数比如MOVA,#8二进制就是01这两个数十六进制是从0到9到ABCDEF这16个数.A表示10B表示1...

猜你喜欢