编程杂谈

位域(是表示二进制的位)使用位域是节省内存的一种操作,它能是int不用占用4字节的空间虽然现在的机器都是8G、16G的,但是在单片机的寸土寸金的内存上,还是需要对内存占用进行自定义的控制位的大小:8位构成1字节。1byte(字节)=8bit(位);字节的大小:1024字节等于1KB。1KB=1024B(字节);//位域的定义是在结构体里structToDay{unsignedintmouth:3;//在成员名后加冒号:位的大小undignedintday:2;};位于的使用#include<stdio.h>structToDay{unsignedintmouth:3;//在成员名后加冒号:位的大小unsignedintday:2;}toDay;intmain(void){toDay.mouth=8;toDay.day=3;printf("sizeoftoDay:%d\n",sizeof(toDay));printf("toDay.mouth=%d\n",toDay.mouth);printf("toDay.day=%d\n",toDay.day);return0;}位操作位操作时对二进制位进行一元和二元操作逻辑操作在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。运算符含义优先级举例说明~按位取反高~a如果a为1,则~a为0;如果a为0,则~a为1;&按位取与中a&b只有ab同时为1,结果才为1;只要ab其中一个为0,结果就为0;^按位取异或低a^b如果ab不同,则结果为1;如果ab相同,则结果为0;|按位取或最低a|b如果ab其中一个为1,则结果为1;如果ab同时为0,则结果为0;按位取反(~)~000000=>111111按位取与(&)001010&010110=>000010按位取异或(^)010110^011001=>001111按位取或(|)010011|100110=>110111