单片机的进制及其转换_单片机中进制转换知识

电子常识

2636人已加入

描述

  单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。本文主要详解单片机的进制及其转换以及单片机中进制转换知识,具体的跟随小编来详细的了解一下。

  单片机的进制转换关系

  二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,如:8位二进制数:“00110101” ;c语言中表示为 0b00110101;

  十进制数是我们日常使用的计数方式,如245,21,23453。

  十六进制:逢16进1,用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F表示,对应十进制数是:0,1,2,3,4,5,6,7,8,9,10, 11,12,13,14,15。c语言中十六进制数前加“0x”表示,例如:十六进制:0x35 转换为二进制数为:00110101。

  

  单片机中进制转换知识

  1、如何把一个四字节的十六进制数转换为十进制数,十六进制数的格式低位在前,假设第一个字节位hex_buf[0],hex_buf[1],hex_buf[2],hex_buf[3]。

  方法:

  uint64 add_sum =0;

  sum += hex_buf[0];

  sum += hex_buf[1]《《8;

  sum += hex_buf[2]《《16;

  sum += hex_buf[3]《《24;

  即可得到四个字节十六进制数的十进制数。

  2、如何把一个十进制数转换为一个十六进制数。

  比如:123456789

  首先确认这个数需要用几个字节的十六进制数表示,比如一个字节可以表示的最大数ff也就255,两个字节0xff ff 也就是65535,三个字节可以表示的最大数0xff ff ff也就是‭16777215

  四个字节可表示的最大数是0xff ff ff ff也就是‬‭4294967295‬。由此可知123456789需要四个字节的十六进制数表示。则我们可以把123456789右移三个字节后与0xff相与即得到最高字节数,同理把123456789右移16位后与0xff相与得到第二个字节的十六进制数,同理把123456789右移8位与0xff相与得到第三个字节的十六进制数,最后再把123456789直接与0xff相与得到最后一字节的16进制数。

  

  单片机的进制及其转换

  1、二进制数、十六进制数转换为十进制数(按权求和)

  二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的|进制数 简称“按权求和”。例如:把(1001.01)2 二进制计算。

  解:(1001.01) 2 =8*1+4*0+2*0+ 1*1+0* (1/2)+1*(1/4)=8+0+0+1+0+0.25 =9. 25把(38A. 11)16转换为十进制数

  解:(.38A. 11)16 =3X16的2.次方+8X16的1次方+10X16的0次方+1X16的-1次方+1X16的-2.次方=768+128+10+0.0625+0.0039 =906. 0664

  2、十进制数转换为二进制数,十六进制数(除2/16取会法)

  整数转换。一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到-一简称除二取余法。例:将25转换为二进制数

  解:25六2=12余数1 12:2=6余数0 6+2=3余数0 3-2=1余数1 1=2=0余数1所以25=(11001)2

  同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了。

  例:将25转换为十六进制数 解: 25号16=1 余数9 1=16=0余数1 所以25=(19)16

  3、二进制数与十六进制数之间的转换

  由吁4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的。 所以,十六进制数与=二进制数的转换是十分简单的。

  (1)十六进制数转换成二进制数,只要将每一- ~位十六进制数用对应的4位二进制数替代即可一一简称位分四位。例:将(4AFSB)16转换为二进制数。解:4AF8B

  0100 1010 1111 1000 1011

  所以(4AF8B) 16=(1001010111110001011)2

  (2)二进制数转换为十六进制数,从低位向高位每四位一组,依次写出每组4位二进制数所对应的十六进制数一一简称四位合一位。

  例:将二进制数(0001 1101 0110)2 转换为十六进制数。解: 0001 1101 01101D6

  所以(111010110)2= (1D6) 16

  转换时注意最后一组不足4位时必须加0补齐4位

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分