我想通过仅使用位移操作来尝试仅从一个字节中获得右边的四位,但它有时可以工作,有时不工作,但我不明白为什么。
以下是一个例子:
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)
。
答案 0 :(得分:2)
Shift运算符仅适用于整数类型。使用/api/token=12345
会导致隐式整数提升,请将<<
输入b
,然后选择&#34;保护&#34;更高的位。
要解决,请使用int