基于AT89C51教程之软件篇(二)学习前的知识储备

来源:互联网 发布:多益网络加班怎么样 编辑:程序博客网 时间:2024/05/25 16:39

1.二进制和多进制

二进制如何转换成其他进制怎么做,建议直接百度我就不再重复了,现代计算机芯片归根到底都是由大量密集排布的晶体管的开关从而产生了现在计算能力,那么对于计算专业来说1就是开,0就是关;在我们单片机来看,1除了开还代表高电平(51单片机通常指+5V,当然具体还得参照芯片说明文档来决定,0则还包括低电平)


二进制顾名思义就是逢二进一,就好像十进制当9+111=120一样,二进制的累加111+1=1000;二进制的运算和十进制很相似,网上有大量的知识分析,我就不再赘述。

在计算机方面还有很多其他进制,你可以看看这篇文章或许能够帮助你更好的解答疑惑     微笑点击打开进制教学文档  文档里包含了关于2进制、8进制、16进制等计算方法和基础知识


2.运算符

点击打开链接这里包含了超级全的运算符类型
我重点讲讲重要的几个
++ 自加、--自减 ,++有点类似X=X+1,--则类似X=X-1
X++ ——> 如果出现if(x++),在判断的时候是用x判断还是用x+1呢?我们可以这么理解,x++中x在++之前,if在工作开始之后等不及完成运算,直接先拿X没有自加的值进行判断,所以X++是先使用后运算。
++X——>if(++X)就不一样,不管你多心急在X前面还有++,是先完成运算之后再进行赋值代入计算,这里就是X+1的值。
自减的理解同样,还有几种类似的表示方法x+=1>x=x+1;x*=1>x=x*1;

%、/分别代表取余、除法;在整数中,10%3=1;10/3=3;10/3.0=3.333
10/3=3取整数其实这就是求模运算的一种,任何整数相除只取他们的模,即整数5/3=1,这里有人或许会问,在除法中19/11=1.7272··· ,如何取模,记住我们只管小数点之前的整数,之后的数字在现在运算规则里是直接舍去的。
10/3.0=3.333这个是除法,而3.333在单片机中是浮点型,具体会在下一篇展开。


==  在计算中,等于号不再是=,而==则代表我们所认为的判断符号等于号,看下面简单的一个区分
<span style="white-space:pre"></span>x=0;//代表x在运算中代表0这个数<span style="white-space:pre"></span>x=5;//代表x在运算中重新赋值等于5这个数<span style="white-space:pre"></span>x=0;<span style="white-space:pre"></span>if(x==0);//判断x所代表的值是否等于0这个值


!=  是不等于,if(x!=0)判断x所代表的值是不是等于0;

&&、||、! 与、或、非


在单片机中常用到的位运算符

&、|、^、~、>>、<<

//&只有两值均为1才输出111&01=01;1001&1000=1000;//|只要两值有一个为1 就输出 111  |  01 = 11;0010   |   1001  =  1011;//^按位异或(Xor)是一种可逆运算符,只有在两个比较的位不同时其结果是1,否则结果为0。因此在计算时应先将数值转为二进制11 ^ 01 =10;111^  010 = 101;//~取反,就是将1变0,0变1 x=110;~x =001;x=101;~x=010;//>>该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向右移动指定的位数,移动到右边界之外的多余二进制位会被丢弃,并从左边界移入0。右移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位
x=0110010;x=x>>1;x=0011001;x=1011;x=x>>3;x=0010;//左移方向不一样,效果一样x=101100;x=X<<1;x=011000;


今天就到这里了,赶紧去整理一下,推荐初学者可以看一下,C教程《The_C_programming_Language(中文版)》


0 0