lua自己実現ビット演算
1001 ワード
--2進法に変換
function numberToBits(src)
local result = {}
local bitLen = 32
for i = 1, bitLen do
result[i] = src % 2
src = math.floor(src / 2)
end
return result
end
注記:配列を定義し、入力した数をバイナリに変換します.
--現在の最初の0以外の値の桁数を取得します.
function getBitOrder(src)
local bitLen = 32
local result = 0
for i=1, bitLen do
if src[i]==1 then
result = i
return result
end
end
return 0
end
注記:この基準値としての判断で、基準値を取得するためのシーケンス番号
function isBitIn(src, haveType)
local _order = getBitOrder(numberToBits(haveType))
local _srcTable = numberToBits(src)
if _srcTable[_order]==1 then
return true
end
return false
end
注記:srcにhaveTypeのタイプが含まれているかどうかを判断し、戻り値から判断する
使用方法:
if isBitIn(0x00800402, 0x00000400) then
end
注記:判断0 x 00800402と0 x 000000400はビットまたは操作を行い、判断を行う