bit32

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Ta biblioteka dostarcza funkcje do wykonywania operacji bitowych.

Ograniczenia liczbowe

Ta biblioteka traktuje liczby jako niepodpisane liczby 32-bitowe; liczby zostaną przekonwertowane na tę przed użyciem (zobacz obraz poniżej).Liczby z liczbami dziesiętnymi są zaokrąglane do najbliższej całej liczby.

32-bit integer conversion (in hexadecimal)

Podsumowanie

Funkcje

  • Zwraca liczbę po tym, jak jej bity zostały arytmetycznie przesunięte w prawo przez daną przesunięcie.

  • band(numbers : Tuple):number

    Zwraca bitowe AND wszystkich dostarczonych liczb.

  • Zwraca bitowe zaprzeczenie danego numeru.

  • bor(numbers : Tuple):number

    Zwraca bitowe LUB wszystkich dostarczonych numerów.

  • btest(numbers : Tuple):boolean

    Zwraca booleszczą opisującą, czy bitwise i jego operandy są różne od zera.

  • bxor(numbers : Tuple):number

    Zwraca bitowe XOR wszystkich dostarczonych liczb.

  • Zwraca podany numer z kolejnością wymienionych bajtów.

  • Zwraca liczbę kolejnych zerowych bitów w reprezentacji 32-bitowej podanego numeru, zaczynając od najlewego (najbardziej znaczącego) bitu.

  • Zwraca liczbę kolejnych zerowych bitów w reprezentacji 32-bitowej podanego numeru, zaczynając od najbardziej prawej (najmniej znaczącej) bitu.

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

    Wyodrębnij zakres bajtów z liczby i zwróć je jako niepodpisaną liczbę.

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

    Zwróć kopię liczby z zakresem bitów zastąpionym przez określoną wartość.

  • Zwraca liczbę po tym, jak jej bity zostały obrócone w lewo o określoną liczbę razy.

  • Zwraca liczbę, której bity zostały logicznie przesunięte w lewo przez daną przesunięcie.

  • Zwraca liczbę po tym, jak jej bity zostały obrócone w prawo o określoną liczbę razy.

  • Zwraca liczbę, której bity zostały logicznie przesunięte w prawo przez daną przesunięcie.

Funkcje

arshift

Zwraca liczbę x przesuniętą w prawo o disp bitów.Liczba disp może być dowolną reprezentatywną liczbą całkowitą.Negatywne przesunięcia przesuwają się w lewo.

Ta operacja zmiany jest nazywana operacją arytmetyczną zmiany.Wolne bity po lewej stronie są wypełnione kopiami wyższego bitu x ; wolne bity po prawej stronie są wypełnione zerami.W szczególności przesunięcia z absolutnymi wartościami wyższymi niż 31 prowadzą do zera lub 0xFFFFFFFF (wszystkie oryginalne bity są przesunięte).

Parametry

Liczba, której bity mają zostać przesunięte.

disp: number

Całkowita liczba bitów, przez które należy przesunąć.

Zwroty

band

Zwraca bitowe AND wszystkich dostarczonych liczb.

Każdy bit jest testowany przeciwko następującej tabeli prawdy:


<th>B</th>
<th>Wyjście</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

Parametry

numbers: Tuple

Zwroty

bnot

Zwraca bitowe zaprzeczenie x .

Negation of a provided number

Dla każdej liczby całkowitej x następuje następująca tożsamość:


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

Parametry

Zwroty

Zwraca bitowe LUB wszystkich dostarczonych numerów.

Każdy bit jest testowany przeciwko następującej tabeli prawdy:


<th>B</th>
<th>Wyjście</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

Parametry

numbers: Tuple

Zwroty

btest

Zwraca sygnał binarny, czy bitwise i jego operandów różni się od zera.

Parametry

numbers: Tuple

Zwroty

bxor

Zwraca bitowe XOR wszystkich dostarczonych liczb.

Każdy bit jest testowany przeciwko następującej tabeli prawdy:


<th>B</th>
<th>Wyjście</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

Parametry

numbers: Tuple

Zwroty

byteswap

Zwraca podany numer z kolejnością wymienionych bajtów.

Parametry

Zwroty

countlz

Zwraca liczbę kolejnych zerowych bitów w reprezentacji 32-bitowej podanego numeru, zaczynając od najlewego (najbardziej znaczącego) bitu.Zwraca 32, jeśli podany numer wynosi zero.

Parametry

Zwroty

countrz

Zwraca liczbę kolejnych zerowych bitów w reprezentacji 32-bitowej podanego numeru, zaczynając od najbardziej prawej (najmniej znaczącej) bitu.Zwraca 32, jeśli podany numer wynosi zero.

Parametry

Zwroty

extract

Zwraca niepodpisaną liczbę utworzoną przez bity field do field + width - 1 z n.Bitów jest numerowane od 0 (najmniej znaczące) do 31 (najbardziej znaczące).Wszystkie uzyskane bity muszą być w przedziale [0, 31].Domyślny dla width jest 1.

Parametry

field: number
width: number
Wartość domyślna: 1

Zwroty

replace

Zwraca kopię z bitami zastąpionymi przez wartość .Zobacz bit32.extract() dla szczegółów na temat field i width .

Parametry

field: number
width: number
Wartość domyślna: 1

Zwroty

lrotate

Zwraca liczbę x obróconą o disp bitów w lewo.Liczba disp może być dowolną reprezentatywną liczbą całkowitą.Dla każdego ważnego przesunięcia następuje następująca tożsamość:


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

W szczególności, ujemne przesunięcia obracają się w prawo.

Parametry

disp: number

Zwroty

lshift

Zwraca liczbę x przesuniętą w lewo o disp bitów.Liczba disp może być dowolną reprezentatywną liczbą całkowitą.Negatywne przesunięcia przesuwają się w prawo.W dowolnym kierunku, wolne bity są wypełnione zerami.W szczególności przesunięcia z absolutnymi wartościami wyższymi niż 31 dają wynik zero (wszystkie bity są przesunięte).

Number shifted 3 to the left

Dla pozytywnych przesunięć zachodzi następująca równość:


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

Parametry

disp: number

Zwroty

rrotate

Zwraca liczbę x obróconą o disp bitów w prawo. Liczba disp może być dowolną reprezentatywną liczbą całkowitą.

Dla każdego ważnego przesunięcia następuje następująca tożsamość:


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

W szczególności, ujemne przesunięcia obracają się w lewo.

Parametry

disp: number

Zwroty

rshift

Zwraca liczbę x przesuniętą w prawo o disp bitów.Liczba disp może być dowolną reprezentatywną liczbą całkowitą.Negatywne przesunięcia przesuwają się w lewo.W dowolnym kierunku, wolne bity są wypełnione zerami.W szczególności przesunięcia z absolutnymi wartościami wyższymi niż 31 dają wynik zero (wszystkie bity są przesunięte).

Number shifted 3 to the right

Dla pozytywnych przesunięć zachodzi następująca równość:


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

Ta operacja zmiany nazywana jest logiczną zmianą.

Parametry

disp: number

Zwroty