#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