51單片機——跑馬燈詳解


#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM