1. 程式人生 > >51單片機——跑馬燈詳解

51單片機——跑馬燈詳解

std best () 位運算 計算 stdlib.h pos 32位 sig

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned char 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單片機——跑馬燈詳解