*Luaライブラリ 要注意点 ~ビット演算ライブラリ~ [#d3df91d8] **5.1⇒5.2⇒5.3ところころ変遷したビット演算 [#d5cd1e1b] >ビット演算子の要望は、Lua5.1のころから大きくなってきましたが、~ 仕様が2転、3転しました。 **Lua5.1にはビット演算子が存在しない [#m3cacf31] >LUA5.1にはビット演算を行う標準的なライブラリも存在しなかった。~ ~ **Lua5.2でbit32というライブラリが導入された [#r1e1bdf9] >LUA5.2にて初めてライブラリとして導入された形となる。~ (※Lua5.1にLua5.2とそっくりなライブラリを実装するには、[[Luaで良く作る関数 ~bit32編~>Lua implements_func_bit32]])~ ~ **Lua5.3でbit32ライブラリが消えて、ビット演算子が導入された [#xb9221bc] >結局は関数ではなく、一般的な汎用言語同様、ビット演算子を使った方が見やすい、ということで落ち着いたようです。 >このように2転、3転してしまい、ビット演算に関しては混乱期あったおとは否定できない処ですが、~ >このように2転、3転してしまい、ビット演算に関しては混乱期があったことは、否定できないところでしょう。~ 結局は5.3で「ビット演算子」を導入することで、他言語と同じような決着を見た、~ ということのようです。 **bit32系で複数の可変長を扱えるもの [#r6b4fd75] -bit32.band -bit32.bor -bit32.btest -bit32.bxor~ の引数は可変長で複数の値を同時に演算することができます。~ #sh(lua){{ bit32.band(15,6,3) --> ビット演算子でいう 15 & 6 & 3 ⇒ 2 }} bit32.bandとbit32.btestの違いは、~ 前者は演算結果の数値を返すのに対し、後者は演算結果の数値が0ならばfalseを0以外ならばtrueを返す、という点です。