可以采用在结构体中定义位域的方式,轻松实现按位保存和使用位域值对应的变量。
用位运算,&0x01就会把最左边的那位取出来,然后右移这个数就是0xa0>>1,继续&0x01就把第二位取出来了,这样就都取出来了
可以存放在数组里,像这样
#include
int main(){
unsigned char b=0xe1;
bool c[8];
unsigned char mask=0x80;
for(int i=0;i<8;++i){
c[i]=b&mask; //从最高位开始,每次得到一位
mask/=2;
}
for(int j=0;j<8;++j)
printf("%d",c[j]);
return 0;
}
#include
int main()
{
char i = 0xa0;
char j = ((i & 0xf0) >> 4);
char n = (i & 0xf);
printf("j = %x n = %x", j ,n);
return 0;
}