bit32
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
ไลบรารีนี้ให้ฟังก์ชันสำหรับการดำเนินการ bitwise
ข้อจํากัดตัวเลข
ไลบรารีนี้จัดการตัวเลขเป็นจํานวนไม่ลงนาม 32 บิต; ตัวเลขจะถูกแปลงเป็นไฟล์นี้ก่อนที่จะใช้ (ดูภาพด้านล่าง)ตัวเลขที่มีตัวเลขทศนิยมถูกตัดเป็นตัวเลขทศนิยมที่ใกล้เคียงที่สุด

สรุป
ฟังก์ชัน
ส่งคืนตัวเลขหลังจากที่บิตถูกเลื่อนทางคณิตศาสตร์ไปทางขวาโดยการเคลื่อนย้ายที่กำหนด
คืน bitwise และของทุกหมายเลขที่ให้มาทั้งหมด
ส่งคืนการปฏิเสธแบบไบต์ของหมายเลขที่กำหนด
คืน bitwise OR ของตัวเลขทั้งหมดที่ให้ไว้
คืนค่าเป็นบูลีนที่อธิบายว่า bitwise และของตัวแปรของมันแตกต่างจากศูนย์หรือไม่
คืน bitwise XOR ของตัวเลขทั้งหมดที่ให้ไว้
คืนหมายเลขที่กำหนดด้วยลำดับของไบต์ที่แลกเปลี่ยน
คืนจํานวนบิตเป็นศูนย์ต่อเนื่องในการแทนที่ 32 บิตของหมายเลขที่จัดให้โดยเริ่มจากบิตที่เล็กที่สุด (สําคัญที่สุด)
คืนจํานวนบิตเป็นศูนย์ติดต่อกันในการแทนที่ 32 บิตของหมายเลขที่จัดให้โดยเริ่มจากบิตที่สําคัญที่สุด (น้อยที่สุด)
สกัดช่วงบิตจากตัวเลขและส่งคืนเป็นตัวเลขที่ไม่ลงนาม
คืนสำเนาของตัวเลขที่มีช่วงบิตที่ถูกแทนที่ด้วยค่าที่กำหนด
ส่งคืนตัวเลขหลังจากที่บิตถูกหมุนไปทางซ้ายโดยจํานวนครั้งที่กำหนดแล้ว
คืนหมายเลขที่บิตถูกเลื่อนไปทางซ้ายโดยการเคลื่อนย้ายที่กำหนดแล้ว
ส่งคืนตัวเลขหลังจากที่บิตถูกหมุนไปทางขวาโดยจํานวนครั้งที่กำหนดแล้ว
คืนหมายเลขที่บิตถูกเลื่อนไปทางขวาโดยการเลื่อนที่กำหนดไว้แล้ว
ฟังก์ชัน
arshift
คืนหมายเลข x ย้าย disp บิตไปทางขวาหมายเลข disp อาจเป็นตัวเลขที่เป็นตัวแทนได้การเคลื่อนที่เชิงลบเปลี่ยนไปทางซ้าย
การดำเนินการเปลี่ยนเวลานี้เรียกว่าการเปลี่ยนเวลาทางคณิตศาสตร์บิตว่างทางด้านซ้ายเต็มไปด้วยสำเนาของบิตสูงกว่า x บิตว่างทางด้านขวาเต็มไปด้วยเป็นศูนย์โดยเฉพาะอย่างยิ่ง การเลื่อนที่มีค่าสัมบูรณ์มากกว่า 31 จะทำให้เกิดเป็นศูนย์หรือ 0xFFFFFFFF (บิตทั้งหมดเดิมถูกเลื่อนออก)
ส่งค่ากลับ
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 |
---|

พารามิเตอร์
ส่งค่ากลับ
bor
คืน 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 |
---|

พารามิเตอร์
ส่งค่ากลับ
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 |
---|

พารามิเตอร์
ส่งค่ากลับ
extract
คืนหมายเลขไม่ลงนามที่สร้างขึ้นโดยบิต field ถึง field + width - 1 จาก nบิตจะถูกจัดเรียงตามลำดับจาก 0 (น้อยที่สุดสำคัญ) ถึง 31 (สำคัญที่สุด)บิตทั้งหมดที่เข้าถึงได้ต้องอยู่ในช่วง [0, 31]ค่าเริ่มต้นสำหรับ width คือ 1
ส่งค่ากลับ
lrotate
ส่งคืนหมายเลข x หมุน disp บิตไปทางซ้ายหมายเลข disp อาจเป็นตัวเลขที่เป็นตัวแทนได้สำหรับการย้ายที่ถูกต้องใดๆ รหัสตัวตนต่อไปนี้จะถือว่า:
assert(bit32.lrotate(x, disp) == bit32.lrotate(x, disp % 32))
โดยเฉพาะอย่างยิ่งการเคลื่อนที่เชิงลบจะหมุนไปทางขวา
ส่งค่ากลับ
lshift
คืนหมายเลข x ย้าย disp บิตไปทางซ้ายหมายเลข disp อาจเป็นตัวเลขที่เป็นตัวแทนได้การเคลื่อนที่เชิงลบเปลี่ยนไปทางขวาในทิศทางใดก็ตาม บิตว่างเปล่าจะเต็มไปด้วยเป็นศูนย์โดยเฉพาะอย่างยิ่งการเลื่อนที่มีค่าสัมบูรณ์สูงกว่า 31 จะทำให้เกิดเป็นศูนย์ (บิตทั้งหมดถูกเลื่อนออก)

สำหรับการเคลื่อนย้ายในเชิงบวก ความเท่าเทียมต่อไปนี้จะถือว่า:
assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
ส่งค่ากลับ
rrotate
ส่งคืนหมายเลข x หมุน disp บิตไปทางขวา หมายเลข disp อาจเป็นตัวเลขที่เป็นตัวแทนได้
สำหรับการย้ายที่ถูกต้องใดๆ รหัสตัวตนต่อไปนี้จะถือว่า:
assert(bit32.rrotate(x, disp) == bit32.rrotate(x , disp % 32))
โดยเฉพาะอย่างยิ่งการเคลื่อนที่เชิงลบจะหมุนไปทางซ้าย
ส่งค่ากลับ
rshift
คืนหมายเลข x ย้าย disp บิตไปทางขวาหมายเลข disp อาจเป็นตัวเลขที่เป็นตัวแทนได้การเคลื่อนที่เชิงลบเปลี่ยนไปทางซ้ายในทิศทางใดก็ตาม บิตว่างเปล่าจะเต็มไปด้วยเป็นศูนย์โดยเฉพาะอย่างยิ่งการเลื่อนที่มีค่าสัมบูรณ์สูงกว่า 31 จะทำให้เกิดเป็นศูนย์ (บิตทั้งหมดถูกเลื่อนออก)

สำหรับการเคลื่อนย้ายในเชิงบวก ความเท่าเทียมต่อไปนี้จะถือว่า:
assert(bit32.rshift(b, disp) == (b % 2^32 / 2^disp) // 1)
การดำเนินการเปลี่ยนเกียร์นี้เรียกว่าการเปลี่ยนเกียร์ตามตัวอักษร