CからLuaへのコードを翻訳しようとしていますが、私は問題に直面しています。 LuaでBitwise ANDをどのように翻訳できますか? ソースCコードが含まれていますルアの「ビット単位AND」
場合((コマンド&は0x80)== 0) ...
どのようにこれはLuaの中で行うことができますか?私はLuaの5.1.4-8を使用しています
ここ
CからLuaへのコードを翻訳しようとしていますが、私は問題に直面しています。 LuaでBitwise ANDをどのように翻訳できますか? ソースCコードが含まれていますルアの「ビット単位AND」
場合((コマンド&は0x80)== 0) ...
どのようにこれはLuaの中で行うことができますか?私はLuaの5.1.4-8を使用しています
ここ
で純粋なLuaの5.1の基本的な、孤立ビット単位-と実装:
function bitand(a, b)
local result = 0
local bitval = 1
while a > 0 and b > 0 do
if a % 2 == 1 and b % 2 == 1 then -- test the rightmost bits
result = result + bitval -- set the current bit
end
bitval = bitval * 2 -- shift left
a = math.floor(a/2) -- shift right
b = math.floor(b/2)
end
return result
end
用法:
print(bitand(tonumber("1101", 2), tonumber("1001", 2))) -- prints 9 (1001)
もう一度投稿していただきありがとうございます。 – Fusseldieb
ありがとうございました。今私は "Bitwise Left Shift"に苦労しているので、私はまったく無名です。 – Fusseldieb
これらの2つのオペランドは、LCD画面を制御するために必要です。今私はあなたの助けのために半分です: – Fusseldieb
OR, XOR, AND = 1, 3, 4
function bitoper(a, b, oper)
local r, m, s = 0, 2^52
repeat
s,a,b = a+b+m, a%m, b%m
r,m = r + m*oper%(s-a-b), m/2
until m < 1
return r
end
print(bitoper(6,3,OR)) --> 7
print(bitoper(6,3,XOR)) --> 5
print(bitoper(6,3,AND)) --> 2
インターネット上で 'lua bitwise'や' lua bitwise operations'を検索しようとしましたか?彼らはあなたに必要な答えを見つけなければならないからです。 –
はい、私は30時間拘束しました。私はbitwiseのライブラリが5.2で追加されたが、このコードを実行する私のルータはまだ5.1.4を実行していて、それが最新であることがわかった。 – Fusseldieb
私のGoogle(およびbingとyahoo)検索結果の*最初のリンク*は、必要な情報を持ったhttp://lua-users.org/wiki/BitwiseOperatorsです。 –