最下位の1が立つbitだけ残したい

概要

高速にビット列が与えられたときに1が立っているビットの中で最下位の1だけを残して他のbitを全て0にする方法についてまとめます.
Facebookシェア Twitterツイート LINEで送る このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
0
条件
  • 0と1からなるビット列が入力
効果
  • 1が立つ最下位1bitのみを残したビット列を得る
ポイント
  • x&(-x)を行うことで最下位の1bitのみを残すことができます.

解 説

高速にビット列が与えられたときに1が立っているビットの中で最下位の1だけを残して他のbitを全て0にする方法についてです. 方法 x = 1100とします. -x = 0100となります. このとき最下位の1が立っているbitが変わらず他は反転するため、 これらの"&"を取ることで1だけを残せます. x & (-x) = 0100 これで目的のビット列が手に入りました.
最下位の1が立つbitだけ残したい
1だけ残すbit列の作成過程
この章を学んで新たに学べる
Comments

Reasons
>>隠す