2012-01-25 12 views
1

cがintの場合、私は文c = c & (1 << bit)が何をしているのか分かりません。どんな助けも高く評価されます!c = c&(1 <<ビット)とは何ですか?

+0

声明について正確には分かりませんが、 – Oded

+0

@Oded彼の質問だと思います。 – JonH

+0

@JonH - 私は彼が声明のどの部分を拡大するか、または全体としての声明を展開することを望んでいました。 – Oded

答えて

11

このマスクアウトcbit番目のビットが、すべてです。

結果は(1 << bit)(2のべき乗)又は0に等しいであろういずれか

  c = 27 = 00011011 (binary) 
(1 << bit) = 4 = 00000100 
    result =  00000000 = 0 

注意こと:c = 27場合とbit = 3

  c = 27 = 00011011 (binary) 
(1 << bit) = 8 = 00001000 
    result =  00001000 = 8 

bit = 2

+1

バイナリーの説明のための – Oded

+1

+1いいえの例のための+1 –

+0

+1彼らが言った;) 私は理解すると思う..この仮定は正しいですか? : ビット= 7の場合、任意のcの結果は64または0のいずれかですか? –

6

右から数えてbitの位置にあるビットを除いて、cのすべてのビットをゼロに設定します。その特定のビットは変更されません。基本的に、これは位置bitのビットがセットされているかどうかをチェックする一つの方法(c > 0)か、しない(c == 0

+1

ビットに位置ビットのビットを変えずに残しておくことができます(つまり、無条件に1に設定しません)。 – BeeOnRope

+0

@BeeOnRope:良い点。固定 –

関連する問題