それは、そのビットで何をしたいかによって異なります。リンク状態、それを呼び出します L は変数/レジスタのどこかにあります
43210
xxxxLxxxx
必要なビットを 1 で分離するには、ビットごとの操作を行います。
xxLxxxx
& 0010000
=========
00L0000
1<<4 = 4 つのゼロまたは 0b10000 を含む 1、必要な数。
status&(1<<4)
これにより、ゼロまたは 0b10000 のいずれかの結果が得られます。ブール比較を実行して、false (ゼロ) か true (ゼロではない) かを判断できます。
if(status&(1<<4))
{
//bit was on/one
}
else
{
//bit was off/zero
}
結果を 1 または 0 にしたい場合は、結果を 1 列にシフトする必要があります。
(0b00L0000 >> 4) = 0b0000L
and の結果が 0 の場合、シフトしても 0 になります。結果が 0b10000 の場合、4 を右にシフトすると 0b00001 になります。
それで
(status&(1<<4))>>4 gives either a 1 or 0;
(xxxxLxxxx & (00001<<4))>>4 =
(xxxxLxxxx & (10000))>>4 =
(0000L0000) >> 4 =
0000L
より少ない操作を使用してこれを行う別の方法は、
(status>>4)&1;
xxxxLxxxx >> 4 = xxxxxxL
xxxxxxL & 00001 = 00000L