bit32

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

このライブラリは、ビット操作を実行する機能を提供します。

数字制限

このライブラリは、数字を 32 ビットの未署名整数として扱います;数字は使用する前にこれに変換されます (下の画像を参照)。小数と桁数の数字は、最も近い全数字に丸められます。

32-bit integer conversion (in hexadecimal)

概要

関数

  • ビットが指定された移動量によって右に算数的に移動された後、数を返します。

  • band(numbers : Tuple):number

    提供されたすべての数のビットワイズ AND を返します。

  • 指定された数のビットワイズ否定を返します。

  • bor(numbers : Tuple):number

    提供されたすべての数のビットワイズ OR を返します。

  • btest(numbers : Tuple):boolean

    ビット演算とそのオペレンドがゼロから異なるかどうかを説明するブールを返します。

  • bxor(numbers : Tuple):number

    提供されたすべての数のビットワイズ XOR を返します。

  • 交換されたバイトの順序で指定された数を返します。

  • 提供された数から最も左に (最も重要な) ビットから始まる 32 ビットの表現での連続ゼロビットの数を返します。

  • 提供された数から右端(最も重要な)ビットから始まる 32ビットの表現における連続ゼロビットの数を返します。

  • extract(n : number,field : number,width : number):number

    数からビットの範囲を抽出し、無署名の数値として返す。

  • replace(n : number,v : number,field : number,width : number):number

    指定された値に置換されたビット範囲の数のコピーを返します。return a copy of a number with a range of bits replaced by a given value.

  • ビットが指定された数回回転した後、数字を返します。

  • 指定された移動量によりビットが論理的に左にシフトされた数を返します。

  • ビットが指定された数回回転した後、番号を返します。

  • 指定された移動量によりビットが論理的に右にシフトされた数を返します。

関数

arshift

数値 x を右にシフトして disp ビットを返します。番号 disp は任意の表現可能な整数である可能性があります。負の移動は左にシフトします。

このシフト操作は、幾何移動と呼ばれるものです。左側の空きビットは、x の上位ビットのコピーで満たされ、右側の空きビットはゼロで満たされます。特に、31以上の絶対値を持つ移動は、ゼロまたは 0xFFFFFFFF(すべてのオリジナルビットが移動されます)になります。

パラメータ

ビットを移動する番号。

disp: number

シフトするビットの整数数。

戻り値

band

提供されたすべての数のビットワイズ 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)

パラメータ

戻り値

提供されたすべての数のビットワイズ 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 がゼロから異なるかどうかを示すボールーンを返します。

パラメータ

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 ビットの表現での連続ゼロビットの数を返します。提供された番号が 0 の場合は 32 を返します。

パラメータ

戻り値

countrz

提供された数から右端(最も重要な)ビットから始まる 32ビットの表現における連続ゼロビットの数を返します。提供された番号が 0 の場合は 32 を返します。

パラメータ

戻り値

extract

ビット から に形成された未署名の数を返します。ビットは 0(最も小さい)から 31(最も重要)まで番号が付けられています。アクセスされたビットすべてが [0, 31] の範囲にある必要があります。デフォルトは width です。

パラメータ

field: number
width: number
既定値: 1

戻り値

replace

ビット n を使用して、field に置換された値 field + width - 1v のコピーを返します。詳細については、 および を参照してください。

パラメータ

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

戻り値