C语言中怎么才能把一个8位的数据(如0xa0)拆成一位一位分别存储,比如说我要怎么样才能把1110

2025-06-20 07:41:35
推荐回答(4个)
回答1:

可以采用在结构体中定义位域的方式,轻松实现按位保存和使用位域值对应的变量。

回答2:

用位运算,&0x01就会把最左边的那位取出来,然后右移这个数就是0xa0>>1,继续&0x01就把第二位取出来了,这样就都取出来了

回答3:

可以存放在数组里,像这样
#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;
}

回答4:

#include
int main()
{
char i = 0xa0;
char j = ((i & 0xf0) >> 4);
char n = (i & 0xf);

printf("j = %x n = %x", j ,n);
return 0;
}