bit32

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

這個庫提供功能來執行位元操作。

數量限制

這個庫將數字視為未簽名的 32 位元整數;數字將在使用前轉換為此 (見下圖)。裝有十進位數字的數字會被回合到最接近的整數。

32-bit integer conversion (in hexadecimal)

概要

函式

函式

arshift

返回數字 x 向右移動 disp 位元。數字 disp 可能是任何可表示的整數。負移動向左移動。

這個切換操作被稱為算術切換。左側的空位位置被填滿了 x 的高位複製;右側的空位位置被填滿了零。特別是,擁有絕對值高於 31 的移動會導致為零或 0xFFFFFFFF(所有原始位元都被移出)。

參數

數字的位元將被移動的數字。

disp: number

要移動的整數位元數。

返回

band

返回所有提供的數字的位元乘法和。

每一位元都被測試對以下真實表:


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

參數

返回

返回所有提供的數字的位元或的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

返回是否為其操作參數的 bitwise 與零不同的 boolean 信號。

參數

numbers: Tuple

返回

bxor

返回所有提供的數字的位元 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

返回由 bits 到 形成的未簽名數字。位元從 0 (最小值) 到 31 (最大值) 被編號。所有存取的位元必須在範圍 [0、31] 內。對於 width 的預設值是 1。

參數

field: number
width: number
預設值:1

返回

replace

返回 n 的副本,其位元 field 被值 field + width - 1 替換,值 v 被替換。請見 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

返回