使用位移操作仅从一个字节中获取右边的四位

时间:2015-06-10 19:27:10

标签: c syntax bit-manipulation bitwise-operators

我想通过仅使用位移操作来尝试仅从一个字节中获得右边的四位,但它有时可以工作,有时不工作,但我不明白为什么。

以下是一个例子:

unsigned char b = foo; //say foo is 1000 1010
unsigned char temp=0u;

temp |= ((b << 4) >> 4);//I want this to be 00001010

PS:我知道我可以使用mask=F并执行temp =(mask&=b)

1 个答案:

答案 0 :(得分:2)

Shift运算符仅适用于整数类型。使用/api/token=12345会导致隐式整数提升,请将<<输入b,然后选择&#34;保护&#34;更高的位。

要解决,请使用int