#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