51单片机跑马灯c语言,51单片机——跑马灯详解(示例代码)

#include #include

intmain()

{

unsignedchar temp = 0xFE;int num; //temp 转化为十进制数字

char j[20]; //二进制数字字符串

while(1){

num=temp;

itoa(num,j,2); //十进制转二进制 itoa(待转,输出,进制)

printf("%s\n",j); //输出转换后的二进制编码

temp = (temp << 1) | 0x01; //temp << 1代表二进制数左移一位,最低位补零//| 代表二进制逐项为进行或运算(有1出1,无1出0)

if(0xFF ==temp)

temp= 0xFE;

}return 0;

}

unsigned char:

unsigned char表示无符号字符型,unsigned int表示无符号整型

他们在计算机中占用的内存大小不同,unsigned char 占8位,即1个字节,是以二进制补码的方式存储,能表示的数据范围是0~255(即0x00-0xFF),而unsigned int一般占32位,即4个字节,能表示的数据范围是0~65535。

<< (左移):

运算规则:

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

语法格式:

需要移位的数字 << 移位的次数

例如: 3 << 2,则是将数字3左移2位

计算过程:

3 << 2 首先把3转换为二进制数字0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 1100,则转换为十进制是12。

位运算:

& 按位与      | 按位或      ^ 按位异或

(有0则0,全1为1) (有1则1,全0为0) (相同为0,不同为1)

1 & 1 = 1      1 | 1 = 1      1 ^ 1 = 0

1 & 0 = 0     1 | 0 = 1      1 ^ 0 = 1

0 & 1 = 0     0 | 1 = 1      0 ^ 1 = 1

0 & 0 = 0      0 | 0 = 0      0 ^ 0 = 0

你可能感兴趣的:(51单片机跑马灯c语言)