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

Facebookシェア Twitterツイート LINEで送る Googleシェア このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
Up
0
Down

要約

概要

高速にビット列が与えられたときに1が立っているビットの中で最下位の1だけを残して他のbitを全て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
>>隠す