ビット演算の小技
ビット演算の扱いが下手なので、慣れるためにビット演算で遊んだり、小技を集めてみた。
今回は小技のめも。
一番右のビットを0にする
x&(x-1)
一番右の1になってるビットの位置
x&-x
一番右の0になってるビットの位置
-~x&~x
一番右側から連続してる0を1に変える
x|(x-1)
一番右側から連続してる0の部分のマスク
~x&(x-1)
一番右側から連続してる0の数だけ右にシフト
x/(x&-x)2^nの値なら1を返す
!(x&(x-1))&&x
ビット演算の扱いが下手なので、慣れるためにビット演算で遊んだり、小技を集めてみた。
今回は小技のめも。
一番右のビットを0にする
x&(x-1)
一番右の1になってるビットの位置
x&-x
一番右の0になってるビットの位置
-~x&~x
一番右側から連続してる0を1に変える
x|(x-1)
一番右側から連続してる0の部分のマスク
~x&(x-1)
一番右側から連続してる0の数だけ右にシフト
x/(x&-x)2^nの値なら1を返す
!(x&(x-1))&&x