2018-01-26 C - 基础 - 位操作 二进制、位、字节 一个字节包括8个位。C术语字节表示存放系统字符集大小,C字节可能8、9、16或其他。 有符号整数表示由硬件决定,1+7表示方法范围-127~+127,有+0和-0。采用二进制补码,-127~128。 浮点数表示法,二进制小数+二进制指数 位逻辑运算符123456789101112131415161718192021222324252627#include <stdio.h>int main(int argc, char *argv[]){ unsigned char c = 2; // 0000 0010 unsigned char vc = ~c; // 1111 1101 printf("位运算符,%d 按位取反 : %d \n", c, vc); unsigned char d = 1;// 0000 0001 vc = c & d; // 0000 0000 printf("位运算符,%d 按位与 %d : %d \n", c, d, vc); // 用作掩码、查看一位的值 vc = c | d; // 0000 0011 printf("位运算符,%d 按位或 %d : %d \n", c, d, vc); // 用作打开位、关闭位 d = 3; // 0000 0011 vc = c ^ d; // 0000 0001 printf("位运算符,%d 按位异或 %d : %d \n", c, d, vc); // 用作转置位 vc = c << 2; // 0000 1000 , 8 printf("位运算符,%d 左移 %d : %d \n", c, 2, vc); // 用法: 高效2的次幂 乘除法 vc = c >> 2; // 0000 0000 , 0 printf("位运算符,%d 右移 %d : %d \n", c, 2, vc); return 0;} 位字段12345678910111213#include <stdio.h>struct { // 位字段 unsigned int autfd : 1; // 1位字段 unsigned int bldfc : 1;}prnt;int main(int argc, char *argv[]){ prnt.autfd = 0; prnt.bldfc = 1; // 可以指定位字段的位数,实例化时小心超出容量哦 // 费劲心机省内存,我还是写Java去吧 return 0;} 推荐文章 上一篇 C - 基础 - C预处理器和C库 下一篇 C - 基础 - 联合、枚举、typedef、函数指针