可能重复:
解释用于设置,清除和测试单个位的算法
我有一个unsigned char.我希望将位2到4(从最低有效位计为0)复制到另一位unsigned char作为前三位.例如,在
abcdefgh // a,b,c,d,e,f,g,h are 0 or 1
Run Code Online (Sandbox Code Playgroud)
变
00000def
Run Code Online (Sandbox Code Playgroud)
我试过了
unsigned char input, output;
output = (input << 3) >> 5;
Run Code Online (Sandbox Code Playgroud)
这不起作用,但是
output = (input << 3)
output >>= 5;
Run Code Online (Sandbox Code Playgroud)
确实有效.
C中有没有办法在一行中完成这个任务?