bit32

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไลบรารีนี้ให้ฟังก์ชันสำหรับการดำเนินการ bitwise

ข้อจํากัดตัวเลข

ไลบรารีนี้จัดการตัวเลขเป็นจํานวนไม่ลงนาม 32 บิต; ตัวเลขจะถูกแปลงเป็นไฟล์นี้ก่อนที่จะใช้ (ดูภาพด้านล่าง)ตัวเลขที่มีตัวเลขทศนิยมถูกตัดเป็นตัวเลขทศนิยมที่ใกล้เคียงที่สุด

32-bit integer conversion (in hexadecimal)

สรุป

ฟังก์ชัน

  • ส่งคืนตัวเลขหลังจากที่บิตถูกเลื่อนทางคณิตศาสตร์ไปทางขวาโดยการเคลื่อนย้ายที่กำหนด

  • band(numbers : Tuple):number

    คืน bitwise และของทุกหมายเลขที่ให้มาทั้งหมด

  • ส่งคืนการปฏิเสธแบบไบต์ของหมายเลขที่กำหนด

  • bor(numbers : Tuple):number

    คืน bitwise OR ของตัวเลขทั้งหมดที่ให้ไว้

  • btest(numbers : Tuple):boolean

    คืนค่าเป็นบูลีนที่อธิบายว่า bitwise และของตัวแปรของมันแตกต่างจากศูนย์หรือไม่

  • bxor(numbers : Tuple):number

    คืน bitwise XOR ของตัวเลขทั้งหมดที่ให้ไว้

  • คืนหมายเลขที่กำหนดด้วยลำดับของไบต์ที่แลกเปลี่ยน

  • คืนจํานวนบิตเป็นศูนย์ต่อเนื่องในการแทนที่ 32 บิตของหมายเลขที่จัดให้โดยเริ่มจากบิตที่เล็กที่สุด (สําคัญที่สุด)

  • คืนจํานวนบิตเป็นศูนย์ติดต่อกันในการแทนที่ 32 บิตของหมายเลขที่จัดให้โดยเริ่มจากบิตที่สําคัญที่สุด (น้อยที่สุด)

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

    สกัดช่วงบิตจากตัวเลขและส่งคืนเป็นตัวเลขที่ไม่ลงนาม

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

    คืนสำเนาของตัวเลขที่มีช่วงบิตที่ถูกแทนที่ด้วยค่าที่กำหนด

  • ส่งคืนตัวเลขหลังจากที่บิตถูกหมุนไปทางซ้ายโดยจํานวนครั้งที่กำหนดแล้ว

  • คืนหมายเลขที่บิตถูกเลื่อนไปทางซ้ายโดยการเคลื่อนย้ายที่กำหนดแล้ว

  • ส่งคืนตัวเลขหลังจากที่บิตถูกหมุนไปทางขวาโดยจํานวนครั้งที่กำหนดแล้ว

  • คืนหมายเลขที่บิตถูกเลื่อนไปทางขวาโดยการเลื่อนที่กำหนดไว้แล้ว

ฟังก์ชัน

arshift

คืนหมายเลข x ย้าย disp บิตไปทางขวาหมายเลข disp อาจเป็นตัวเลขที่เป็นตัวแทนได้การเคลื่อนที่เชิงลบเปลี่ยนไปทางซ้าย

การดำเนินการเปลี่ยนเวลานี้เรียกว่าการเปลี่ยนเวลาทางคณิตศาสตร์บิตว่างทางด้านซ้ายเต็มไปด้วยสำเนาของบิตสูงกว่า x บิตว่างทางด้านขวาเต็มไปด้วยเป็นศูนย์โดยเฉพาะอย่างยิ่ง การเลื่อนที่มีค่าสัมบูรณ์มากกว่า 31 จะทำให้เกิดเป็นศูนย์หรือ 0xFFFFFFFF (บิตทั้งหมดเดิมถูกเลื่อนออก)

พารามิเตอร์

หมายเลขที่บิตของมันจะถูกย้าย

disp: number

จํานวนเต็มของบิตที่จะเลื่อน

ส่งค่ากลับ

band

คืน bitwise และของทุกหมายเลขที่ให้มาทั้งหมด

แต่ละบิตถูกทดสอบกับตารางความจริงต่อไปนี้:


<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

คืนสัญญาณเชิงเบี้ยวว่า 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

คืนหมายเลขไม่ลงนามที่สร้างขึ้นโดยบิต field ถึง field + width - 1 จาก nบิตจะถูกจัดเรียงตามลำดับจาก 0 (น้อยที่สุดสำคัญ) ถึง 31 (สำคัญที่สุด)บิตทั้งหมดที่เข้าถึงได้ต้องอยู่ในช่วง [0, 31]ค่าเริ่มต้นสำหรับ width คือ 1

พารามิเตอร์

field: number
width: number
ค่าเริ่มต้น: 1

ส่งค่ากลับ

replace

คืนสำเนาของ n ด้วยบิต field ไปที่ field + width - 1 ถูกแทนที่ด้วยค่า vดู bit32.extract() สำหรับรายละเอียดเกี่ยวกับ field และ width

พารามิเตอร์

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

ส่งค่ากลับ