fscript 是 AWTK 内置的脚本引擎,开发者可以在 UI XML 文件中直接嵌入 fscript 脚本,提高开发效率。本文介绍一下 fscript 中的 位操作扩展函数
位操作扩展函数
1. &
位与运算。
原型
n1 & n2
示例
print(1 & 1)
2. |
位或运算。
原型
n1 | n2
示例
print(|(1, 2))
3.~
按位取反运算。
原型
~(n1)
示例
print(~1)
4.^
异或运算。
原型
n1^n2
示例
print(n1^n2)
5. <<
左移
原型
n1<<n2
示例
print(n1<<n2)
6. >>
右移
原型
n1>>n2
示例
print(n1>>n2)
7. bit_get
获取指定的位
原型
bit_get(n1, n2) => bool
示例
print(bit_get(0b1010, 1))
8. bit_set
设置指定的位
原型
bit_set(n1, n2) => value
示例
print(bit_set(0b1010, 0))
9. bit_clear
清除指定的位
原型
bit_clear(n1, n2) => value
示例
print(bit_clear(0b1010, 1))
10. bit_toggle
取反指定的位
原型
bit_toggle(n1, n2) => value
示例
print(bit_toggle(0b1010, 1))
更多示例
assert(bit_clear(0b0111, 1) == 0b0101)
assert(bit_clear(0b0111, 0) == 0b0110)
assert(bit_set(0b0, 0) == 0b1)
assert(bit_set(0b0, 1) == 0b10)
assert(bit_set(0b0, 2) == 0b100)
assert(bit_toggle(0b000, 0) == 0b1)
assert(bit_toggle(0b111, 1) == 0b101)
assert(bit_toggle(0b101, 2) == 0b1)
assert(bit_get(0b0111, 0))
assert(bit_get(0b0111, 1))
assert(!bit_get(0b0011, 2))
assert((1<<1) == 2)
assert((1<<2) == 4)
assert((1<<8) == 256)
assert(((0xf0112233 >> 24) & 0xff) == 0xf0)