可能重複:
Explanation of an algorithm to set, clear and test a single bit如何使用個人位?
我有一個unsigned char
。我想將第2到第4位(從最低有效位計數爲0)複製到另一個unsigned char
作爲前三位。例如,在
abcdefgh // a,b,c,d,e,f,g,h are 0 or 1
成爲
00000def
我已經試過
unsigned char input, output;
output = (input << 3) >> 5;
不工作,但
output = (input << 3)
output >>= 5;
確實工作。
C中有一種方法可以在一行中完成此操作嗎?
有** sooo **這個問題很多重複。我上面鏈接的一個是想要一點點的特殊情況,但它很容易概括。 – 2012-01-02 23:18:57
它不起作用,因爲'input << 3'是一個'int',而不是'unsigned char'。 '輸出=(無符號字符)(輸入<< 3) >> 5;'工作。 – pmg 2012-01-02 23:19:55
@pmg或'輸出=((無符號整數)輸入<< 3) >> 5;'所以這兩個按位移將在無符號操作數上完成 – ouah 2012-01-02 23:26:21