bit32

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

这个库提供功能来执行位元操作。

数量限制

这个库将数字视为未签名的 32 位整数;数字将在使用之前转换为此(见下图)。带有十进制数字的数字被圆到最接近的整数。

32-bit integer conversion (in hexadecimal)

概要

职能

职能

arshift

返回数字 x 向右移动 disp 位位。数字 disp 可以是任何可表示的整数。负移动向左移。

这个切换操作被称为算术切换。左边的空位位被填充了 x 的更高位的副本;右边的空位位被填充了零。特别是,绝对值高于 31 的抵消导致为零或 0xFFFFFFFF(所有原始位移出)。

参数

位移的数字,其位移位数为。

disp: number

要移动的整数位数。

返回

band

返回所有提供的数字的 bitwise AND。

每位元都被测试对以下真实表:


<th>B</th>
<th>输出</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
A
Bitwise AND of 3 numbers

参数

numbers: Tuple

返回

bnot

返回 x 的位元否定。

Negation of a provided number

对于任何整数 x,以下身份持有:


assert(bit32.bnot(x) == (-1 - x) % 2^32)

参数

返回

返回所有提供的数字的 bitwise OR。

每位元都被测试对以下真实表:


<th>B</th>
<th>输出</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
A
Bitwise OR of 3 numbers

参数

numbers: Tuple

返回

btest

返回一个 boolean 信号,表示其操作参数的 bitwise 是否与零不同。

参数

numbers: Tuple

返回

bxor

返回所有提供的数字的 bitwise XOR。

每位元都被测试对以下真实表:


<th>B</th>
<th>输出</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
A
Bitwise XOR of 3 numbers

参数

numbers: Tuple

返回

byteswap

返回指定的数字与交换的字节顺序。

参数

返回

countlz

返回提供的数字的 32 位表示中连续零位数的数量,从最左(最重要)的位开始。如果提供的数字为零,返回 32。

参数

返回

countrz

返回提供的数字的 32 位表示中连续零位数的数量,从最右(最不重要)的位开始。如果提供的数字为零,返回 32。

参数

返回

extract

返回由比特 到 形成的未签名数字。位元从 0(最小重要)到 31(最重要)被编号。所有访问的位元必须在范围 [0, 31] 内。默认值为 width 是 1。

参数

field: number
width: number
默认值:1

返回

replace

返回一个复制的 n 与比特 field 替换为值 field + width - 1v 。见 bit32.extract() 对于 fieldwidth 的详细信息。

参数

field: number
width: number
默认值:1

返回

lrotate

返回数字 x 旋转到左边的 disp 位。数字 disp 可以是任何可表示的整数。对于任何有效的抵消,以下身份持有:


assert(bit32.lrotate(x, disp) == bit32.lrotate(x, disp % 32))

特别是,负移动旋转到右侧。

参数

disp: number

返回

lshift

返回数字 x 向左移动 disp 位。数字 disp 可以是任何可表示的整数。负移动向右转移。在任何方向,空闲位被零填充。特别是,绝对值高于 31 的抵消与零结果(所有位移出)。

Number shifted 3 to the left

对于正向位移,以下等式成立:


assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)

参数

disp: number

返回

rrotate

返回数 x 旋转 disp 位到右边。数 disp 可能是任何可表示的整数。

对于任何有效的抵消,以下身份持有:


assert(bit32.rrotate(x, disp) == bit32.rrotate(x , disp % 32))

特别是,负移动旋转到左边。

参数

disp: number

返回

rshift

返回数字 x 向右移动 disp 位位。数字 disp 可以是任何可表示的整数。负移动向左移。在任何方向,空闲位被零填充。特别是,绝对值高于 31 的抵消与零结果(所有位移出)。

Number shifted 3 to the right

对于正向位移,以下等式成立:


assert(bit32.rshift(b, disp) == (b % 2^32 / 2^disp) // 1)

这个切换操作被称为逻辑切换。

参数

disp: number

返回