电子常识
单片机(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位
全部0条评论
快来发表一下你的评论吧 !