lua 自己實現位運算


--轉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

註釋:  判斷 0x00800402 跟 0x00000400 進行位或操作,進行判斷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章