16进制换成10进制 c语言 单片机,单片机入门之三种进制的转换

单片机使用的两大进制表示形式:十进制和十六进制。

21c4295e20342d92130270b449877d1d.gif

(这里使用十进制的数据)

de3ee8d246c885db0aec15e5fcaeaa73.gif

(这里使用十六进制的数据)

十进制一般用于运算,表示形式就是直接写,例如上面的1701。

十六进制一般用于配置单片机的寄存器,表示形式是在数字前面加0x,例如上面的0xC0 0XD0。也就是说,当你看单片机程序遇到0x开头的数据,就是表示十六进制数据。

单片机的寄存器有8位、16位和32位,也就是1个字节、2个字节和4个字节。既然设计到位,那肯定需要二进制的表示。二进制表示数据,非0即1,寄存器中的每一位,也是非0即1,根据寄存器的不同,它的每一位代表的功能不同,例如,把某个寄存器的某个位写1,就开启中断,写0,就关闭中断。看到这里,你就明白些了吧,原来就是这样控制单片机的寄存器。

就像上面说的,配置寄存器,我们一般用十六进制,那么这个十六进制怎么和二进制换算呢?这里就需要用到BCD码了。

BCD码就是8421,它是按照二进制的位置表示的,8421是代表4个位,一个字节8个位,就需要2个8421。如下图所示:

0ff9cd5be0477c4486f428e91f5a2edf.gif

第一行表示BCD码,第二行表示一个字节,也就是一个8位的寄存器。

如何用BCD码把二进制写成十六进制?

例如一个二进制数据如下:

5b9ff533ec52b2b787fbcb6ed97021df.gif

如上图,二进制码是:10001010,转换成十六进制是0x8A。

这个是怎么得到的?

看左边的四个位,把有1的上边的8421加起来,上图中,左边四个位只有8下面有1,所以和就是8。

看右边的四个位,把有1的上边的8421加起来,上图中,右边四个位的8和2下面是1,所以把8+2就等于10,十六进制的10就是A。

所以上面的10001010转换成十六进制是0x8A。

再来一个例子,二进制01101100转换成十六进制是0x6C。(这个你自己按照前面的方法算一下,如果算出来和我的结果一样,那恭喜你,你学会了)

十六进制基础:

73186402f14e704d3cc50943f25c51ae.gif

另外,学单片机会经常使用WINDOWS自带的“计算器”,进行进制的转换。

a2abc24dea832388287a704fe20709c3.gif

我已经把这篇文章做成PDF了,你可以下载到你的电脑永久保存了:

单片机入门之进制转换(点击下载或者右键另存为下载)

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值