最後に1ビットを0に設定するには、&(n-1)のトリックを知っています。例えば、0110 &(0110-1)= 0100です。逆については?最後に0を1に設定しますか? 0110は0111になりますか?最後の(0)ビットを1に設定する方法
私はstackoverflowとオンラインで大量の検索を行っています。何の結果は
最後に1ビットを0に設定するには、&(n-1)のトリックを知っています。例えば、0110 &(0110-1)= 0100です。逆については?最後に0を1に設定しますか? 0110は0111になりますか?最後の(0)ビットを1に設定する方法
私はstackoverflowとオンラインで大量の検索を行っています。何の結果は
を示していないだけで(まあ、ないまさにしかし、あなたは私が何を意味するかを取得)反対ん:ちょうど数のk
番目のビットを設定しn | (n+1)
は、次の操作
n=n|(1<< k)
を行います
ここで、k
は設定したいビットです。
こちらがお役に立てば幸いです。他のビット操作のために
、あなたがこの質問を参照することができます:Manipulation of bits
設定するビットがわかっているとうまくいく。 –
@ vivek-pratap-chaurasia:答えは、「xの特定のビットを1に設定する」という意味です。しかし、問題は「最初のビットを設定することなく、**最後のゼロビット**を1に設定する」ことです。したがって、操作後は「101」(5)は「111」(7)になります。 –
1への最後のゼロ・ビットを設定するには、あなたはそれに1を追加して、ビット単位のOR
(x + 1) | x
最後の0のビットを1に設定するには:
x|1
@ fei-hsueh:あなたの答えは、「xの最後のビットを1に設定する」という意味です。しかし、問題は "**最後のゼロビット**を1に設定する"ことです。したがって、操作後は「101」(5)は「111」(7)になります。 –
'x> = 0 'にすることができますか? (x-x%2):(x + x%2) 'となる。 xが符号なしの場合、 'x - x%2'だけ実行できます。 – Scovetta
ビット単位または1つ: 'x = x | 1 "...申し訳ありませんが、私の答えを見て、私はあなたがちょうど右端のビットを1に設定したいと思った。 –