18、nodeMCU學(xué)習(xí)筆記--bit模塊

閑言碎語(yǔ)

這又是一篇簡(jiǎn)短的不能再短的文章,說的的bit模塊。由于lua沒有提供類似于C語(yǔ)音的位運(yùn)算符,如果想做一些位運(yùn)算,例如 i&0x08,就需要用到bit模塊了。

深呼吸,然后一口氣就可以看完了。

沒有模塊函數(shù)

模塊提供了12個(gè)函數(shù),對(duì)應(yīng)了12種位運(yùn)算。不羅列出來(lái)了。直接看例子。

實(shí)踐一下

  1. bit.arshift(value, shift),算術(shù)右移
print(string.format("0x%02X", bit.arshift(0x04, 1)))
> 0x02
  1. bit.band(val1, val2 [, ... valn]),位與
print(string.format("0x%02X", bit.band(0x04, 0xFF)))
> 0x04
  1. bit.bit(position),類似于 1 << position
print(string.format("0x%02X", bit.bit(0)))
> 0x01
  1. bit.bnot(value),類似于C語(yǔ)言的 ~value
print(string.format("0x%02X", bit.bnot(3)))
> 0xFFFFFFFC
  1. bit.bor(val1, val2 [, ... valn]),位或
print(string.format("0x%02X", bit.bor(0x01, 0x02, 0x04)))
> 0x07
  1. bit.bxor(val1, val2 [, ... valn]),按位異或
print(string.format("0x%02X", bit.bxor(0x01, 0x02)))
> 0x03
  1. bit.clear(value, pos1 [, ... posn]),對(duì)某個(gè)位置0
print(string.format("0x%02X", bit.clear(0xFF, 1, 2, 3)))
> 0xF1
  1. bit.isclear(value, position),判斷某個(gè)位是否為0
print(bit.isclear(0xFE, 0))
> true
  1. bit.isset(value, position),判斷某個(gè)位是否為1
print(bit.isset(0xFE, 0))
> false
  1. bit.lshift(value, shift),左移
print(string.format("0x%02X", bit.lshift(0x80, 1)))
> 0x100
  1. bit.rshift(value, shift),邏輯右移
print(string.format("0x%02X", bit.rshift(0xF, 1)))
> 0x07
  1. bit.set(value, pos1 [, ... posn ]),對(duì)某些位置1
print(string.format("0x%02X", bit.set(0x0, 0, 1, 2)))
> 0x07

因?yàn)閘ua不支持位運(yùn)算,所以只能用bit模塊提供的API。將就著用吧。

簡(jiǎn)書評(píng)論不能貼圖, 如有需要可以到我的GitHub上提issues

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容