您的位置 首页 资料

第14节:二进制与十六进制

从业十年,教你单片机入门第14讲:C51编译器并不支持二进制的书写格式,即使添加某个头文件后能支持二进制的书写格式,二进制的书写还是

从业十年,教你单片机入门 第14讲:

C51编译器并不支撑二进制的书写格局,即便增加某个头文件后能支撑二进制的书写格局,二进制的书写仍是有个坏处,便是数字太多太长了,写起来十分费力不方便,怎么办?解决办法便是用十六进制。十六进制是二进制的缩写,之所以称它为二进制的缩写,是因为它们的转化联系十分简略直观,不需要凭借计算器即可彼此转化。

何谓十六进制?欲搞清楚这个问题,还得先从十进制说起。所谓十进制,便是用一位字符能够表明从0到9这十个数字。所谓二进制,便是用一位字符能够表明从0到1这二个数字。所谓十六进制,当然也便是用一位字符能够表明从0到15这十六个数字。可是立刻就会面对一个问题,十六进制的10到15这6个数其实是有两位字符组成的,并不是一位呀?所以C言语用一个字符A,B,C,D,E,F别离代替10,11,12,13,14,15这6个数,10前面的0到9仍是跟十进制的字符共同。A,B,C,D,E,F也能够用小写a,b,c,d,e,f来代替,不区别大小写。

前面说到了十六进制是二进制的缩写,它们的转化联系十分简略直观,每1位十六进制的字符,对应4位二进制的字符。联系如下:

十进制 二进制 十六进制

0 0000 0

1 0001 1

2 0010 2

3 0011 3

4 0100 4

5 0101 5

6 0110 6

7 0111 7

8 1000 8

9 1001 9

10 1010 A

11 1011 B

12 1100 C

13 1101 D

14 1110 E

15 1111 F

二进制转化成十六进制的时分,假如不是4位的倍数,则最左面高位默许补上0凑组成4位的倍数。比方二进制101001,能够在左面补上2个0变成00101001,然后把每4位字符转成1个十六进制的字符。左面高4位0010对应十六进制的2,右边低4位1001对应十六进制的9,所以合起来终究的十六进制是29。

十六进制的规范书写格局。方才说到的十六进制29,在C言语里不能直接写29,不然就跟十进制的写法混杂了。为了把十六进制和十进制的书写格局进行区别,C言语规则但凡十六进制有必要加一个数字0和一个字母x作为前缀,也便是十六进制有必要以0x作为前缀,方才的十六进制29就应该写成0x29。但凡不加前缀的就默许为十进制。

现在咱们编写一个程序来调查十六进制和二进制的联系,终究把程序编译后下载到坚鸿51学习板调查成果。请直接仿制第十节模板程序,修正的main程序代码如下:

void main() //主程序

{

/*—C言语学习区域的开端—————————————————————————*/

unsigned char a; //界说一个变量a,而且分配了1个字节的RAM空间。

unsigned char b; //界说一个变量b,而且分配了1个字节的RAM空间。

unsigned char c; //界说一个变量c,而且分配了1个字节的RAM空间。

unsigned char d; //界说一个变量d,而且分配了1个字节的RAM空间。

a=0x06; //十六进制前记住加0x前缀,超越9部分的字母不分大小写。

b=0x0A; //十六进制前记住加0x前缀,超越9部分的字母不分大小写。

c=0x0e; //十六进制前记住加0x前缀,超越9部分的字母不分大小写。

d=0x2C; //十六进制前记住加0x前缀,超越9部分的字母不分大小写。

GuiWdData0=a; //把变量a这个数值放到窗口变量0里边显现

GuiWdData1=b; //把变量b这个数值放到窗口变量1里边显现

GuiWdData2=c; //把变量c这个数值放到窗口变量2里边显现

GuiWdData3=d; //把变量d这个数值放到窗口变量3里边显现

/*—C言语学习区域的完毕—————————————————————————*/

while(1)

{

initial();

key_service();

display_service();

}

}

如安在坚鸿51学习板上调查十六进制和二进制?S1和S5按键是切换窗口按键。按住S9按键不松手,就能够调查当时窗口数据的十六进制格局了。松开S9按键便是当时窗口的十进制数据格局。而坚鸿51学习板右上角的16个LED灯就代表了当时窗口的二进制,亮的代表1,灭的代表0。

上朱兆祺51学习板调查程序履行的成果如下:

十六进制 二进制 十进制

unsigned char变量a 6 0000 0110 6

unsigned char变量b A 0000 1010 10

unsigned char变量c E 0000 1110 14

unsigned char变量d 2C 0010 1100 44

多说一句,在程序里,能够用十六进制,也能够用十进制,比方:

d=0x2C与d=44的意义是相同的。十六进制的0x2C和十进制的44终究都会被C51编译器翻译成二进制00101100。

下节预告:十进制与十六进制。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/262141.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部