ビット演算
Luaでビット演算するには、bitlibを使う。bitlibはC言語で書かれたライブラリでソースはかなり簡潔です。
bits.lua
#!/bin/env lua require("bit") function pbits(byte) io.write " " for i=63, 0, -1 do io.write(bit.band(bit.arshift(byte,i), 1)) end io.write(" " .. byte .."\n") end i = 0xffff pbits(i) i = bit.band(i, 0xf0f0) pbits(i) i = bit.bnot(i) pbits(i) i = bit.bor(i, 0xffff) pbits(i) i = bit.bxor(i, 0xffff) pbits(i) i = bit.arshift(i, 5) pbits(i) i = bit.bnot(i) pbits(i) i = bit.lshift(i, 3) pbits(i) i = bit.rshift(i, 5) pbits(i) i = bit.mod(i, 0xff) pbits(i)
実行例
$ ./bits.lua 0000000000000000000000000000000000000000000000001111111111111111 65535 0000000000000000000000000000000000000000000000001111000011110000 61680 1111111111111111111111111111111111111111111111110000111100001111 -61681 1111111111111111111111111111111111111111111111111111111111111111 -1 1111111111111111111111111111111111111111111111110000000000000000 -65536 1111111111111111111111111111111111111111111111111111100000000000 -2048 0000000000000000000000000000000000000000000000000000011111111111 2047 0000000000000000000000000000000000000000000000000011111111111000 16376 0000000000000000000000000000000000000000000000000000000111111111 511 0000000000000000000000000000000000000000000000000000000000000001 1