linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

bit操作 - BITMAP_LAST_WORD_MASK()

概要

指定したビット数分下位bitが1になる値を返す

詳細

  • 取得した値の2の補数と[BITS_PER_LONG - 1]の論理積を求める
    • この演算で取得した値の2の補数からBITS_PER_LONG以上のbitを全て落とす
  • !0UL*1を上で求めた値分右にシフトする
    • 結果として得られる値は引数で受け取った値分下位bitが1になる値となる

*1:unsigned longの有効bitが全て1の値