如何将一个字节分成4对2位

时间:2012-09-13 13:57:54

标签: c bit-manipulation bitwise-operators

我想知道如何在4对2位中打破一个字节。

E.g。我得到以下信息:

0xf0;    /* 11110000 */

,输出应为:

11
11
00
00

2 个答案:

答案 0 :(得分:4)

你应该检查按位操作。它们提供您所需的一切。

按位&掩饰

0xf0 & 0b11000000 = 0b11000000

位移>>

0b11000000 >> 6 = 0b00000011

编辑:

0b00000011 = (0xf0 & 0b11000000) >> 6;
0b00000011 = (0xf0 & 0b00110000) >> 4;
0b00000000 = (0xf0 & 0b00001100) >> 2;
0b00000000 = 0xf0 & 0b00000011;

答案 1 :(得分:1)

void printBits(int byte)
{
  printf("%d%d\n",byte>>7,(byte>>6)&1);
  printf("%d%d\n",(byte>>5)&1,(byte>>4)&1);
  printf("%d%d\n",(byte>>3)&1,(byte>>2)&1);
  printf("%d%d\n",(byte>>1)&1,byte&1);
}