可能性の重複:
Explanation of an algorithm to set, clear and test a single bit個々のビットを使って作業するには?
私はunsigned char
を持っています。私は最初の3ビットとして別のunsigned char
にコピーされた2から4までのビット(0として最下位ビットから数えて)を持っていたいと思います。例えば、
abcdefgh // a,b,c,d,e,f,g,h are 0 or 1
に私が働くが、
output = (input << 3)
output >>= 5;
が仕事をしていません
unsigned char input, output;
output = (input << 3) >> 5;
を試してみました
00000def
になります。
Cでこれを1行で実行する方法はありますか?
この質問には多くの重複があります。上にリンクされたものは、単一のビットを必要とする特殊なケースですが、簡単に一般化します。 –
'input << 3'は' unsigned char'ではなく 'int'なので動作しません。入力が<< 3) >> 5; 'が働いています – pmg
@pmgまたは' output =((unsigned int))入力<< 3) >> 5; 'ビットシフトは符号なしオペランドで行われます – ouah