ตัวแปลงเลขฐานสองเป็นฐานแปด
เลขฐานแปดยังมีบทบาทอยู่ในสิทธิ์ไฟล์ Unix (chmod 755) คู่มือยุค PDP เก่า และชุดเครื่องมือพัฒนาไมโครคอนโทรลเลอร์บางตัว ตัวแปลงนี้รับสตริงเลขฐานสองใดก็ได้ จัดกลุ่มบิตครั้งละสามตัวจากขวา แล้วจับคู่แต่ละกลุ่มกับเลขฐานแปดตั้งแต่ 0 ถึง 7 — พร้อมตัวเลือกเติมศูนย์นำหน้าสำหรับภาษาที่ถือว่า 0755 เป็นค่าคงที่เลขฐานแปด
วิธีแปลงเลขฐานสองเป็นฐานแปด
-
1
ป้อนค่าเลขฐานสอง
ช่องว่างจะถูกตัดออก ความยาวเท่าใดก็ได้ กลุ่มซ้ายสุดจะถูกเติมศูนย์นำหน้าให้ครบสามบิตโดยอัตโนมัติ
-
2
จัดกลุ่มบิตทีละสามจากขวา
`111101100` กลายเป็น `111 101 100` ทิศทางการจัดกลุ่มสำคัญ — ต้องจากขวาไปซ้ายเสมอ
-
3
จับคู่แต่ละกลุ่มสามบิต
000 = 0, 001 = 1, 010 = 2 ไปจนถึง 111 = 7 ทุกกลุ่มสามบิตจับคู่กับเลขฐานแปดได้หนึ่งหลักพอดี
-
4
อ่านและคัดลอกผลลัพธ์
เลือกตัวเลขล้วน (`754`), แบบเติมศูนย์นำหน้า (`0754`) หรือแบบมี `0o` นำหน้า (`0o754`) เพื่อให้เข้ากับ Python 3 และ Rust
ตารางจับคู่สามบิตกับเลขฐานแปด
| ฐานสอง | ฐานแปด |
|---|---|
| 000 | 0 |
| 001 | 1 |
| 010 | 2 |
| 011 | 3 |
| 100 | 4 |
| 101 | 5 |
| 110 | 6 |
| 111 | 7 |
ตัวอย่าง: สิทธิ์ไฟล์ Unix
rwxr-xr-x หมายความว่าเจ้าของมีสิทธิ์อ่าน/เขียน/รัน ส่วนกลุ่มและผู้อื่นมีสิทธิ์อ่าน/รัน ในรูปเลขฐานสองคือ 111 101 101 ซึ่งจัดกลุ่มออกมาเป็นเลขฐานแปด 755 ได้ตรงๆ — เลขเดียวกับที่ส่งให้ chmod
เลขฐานแปดมีประโยชน์เมื่อใด
- สิทธิ์ไฟล์:
chmod 644,umask 022,stat -c %aล้วนใช้เลขฐานแปด - ลำดับหลีก (escape sequence):
\100ใน C คือเลขฐานแปดของ@(64 ในฐานสิบ) - รหัสเครื่องรุ่นเก่า: เอกสาร PDP-8, PDP-11 และ DEC รุ่นแรกๆ ระบุรหัสคำสั่งเป็นเลขฐานแปด เพราะขนาดเวิร์ดเป็นพหุคูณของ 3 บิต
- อ่านง่าย: การจัดกลุ่มสามบิตอ่านได้เร็วกว่าเลขฐานสอง โดยไม่ต้องใช้ตัวอักษรครบชุดแบบเลขฐานสิบหก
จุดที่พลาดง่าย
- ศูนย์นำหน้าหมายถึงเลขฐานแปดใน C:
0755คือเลขฐานแปด 755 (= 493 ในฐานสิบ) ส่วน755คือ 755 ในฐานสิบ ตรวจสอบภาษาของคุณก่อนวาง - JavaScript เลิกใช้เลขฐานแปดแบบเก่าแล้ว: โหมด strict จะปฏิเสธ
0755ให้ใช้0o755แทน - ทิศทางการจัดกลุ่ม: ถ้าจัดจากซ้ายไปขวา คุณจะได้คำตอบผิดสำหรับลำดับบิตใดๆ ที่ความยาวไม่เป็นพหุคูณของ 3
คำถามที่พบบ่อย
เพราะแฟล็กสิทธิ์มาเป็นกลุ่มละสามพอดี (อ่าน, เขียน, รัน) ต่อหนึ่งบทบาท (เจ้าของ, กลุ่ม, ผู้อื่น) แต่ละกลุ่มสามบิตจับคู่หนึ่งต่อหนึ่งกับเลขฐานแปดหนึ่งหลัก ดังนั้น rwxr-xr-x จึงอ่านเป็น 755 ได้ในขั้นเดียว
สำหรับ C, Perl และเชลล์ ให้ใช้ 0 นำหน้า สำหรับ Python 3, Rust และ Swift ให้ใช้ 0o สำหรับ chmod บนบรรทัดคำสั่ง ไม่ต้องใส่คำนำหน้า
เลขลบต้องมีความกว้างบิตแบบมีเครื่องหมาย (ทูคอมพลีเมนต์) กำหนดความกว้างก่อน ไม่เช่นนั้นตัวแปลงจะถือว่าอินพุตทั้งหมดเป็นแบบไม่มีเครื่องหมาย
ไม่ ตัวแปลงจะเติมศูนย์ให้กลุ่มซ้ายสุดจนครบสามบิต 1111 กลายเป็น 001 111 ซึ่งคือเลขฐานแปด 17
เครื่องมือที่เกี่ยวข้อง
เครื่องมือสร้างสีแบบสุ่ม
สร้างสี HEX แบบสุ่ม 1 ถึง 50 สี พร้อมตัวอย่างสีสำหรับดูตัวอย่าง คัดลอก และนำไปใช้ใน CSS งานทดสอบ หรือการสำรวจพาเลตสี.
เครื่องกำเนิดจานสี
สร้างพาเลตสีแบบเอกรงค์ ใกล้เคียง คู่ตรงข้าม ไตรแอดิก หรือเตตราดิกจากสี HEX หลัก พร้อมส่งออกตัวแปร CSS ที่คัดลอกได้ทันที
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
ตัวจัดรูปแบบ JSON
วาง JSON เพื่อจัดให้อ่านง่ายด้วยการเยื้อง 2 หรือ 4 ช่องว่าง ย่อให้เป็นผลลัพธ์แบบกะทัดรัด หรือตรวจสอบไวยากรณ์อย่างรวดเร็วก่อนคัดลอกผลลัพธ์
เครื่องมือเลือกสี HEX
เลือกสีจากหน้าจอแล้วดูค่า HEX, RGB, HSL, HSV และ CMYK พร้อมค่าคอนทราสต์เมื่อเทียบกับสีขาวและสีดำ
ตัวแปลง ASCII เป็นเลขฐานสอง
แปลงสตริง ASCII ใดก็ได้เป็นเลขฐานสอง อักขระทุกตัวกลายเป็นแปดบิต คั่นด้วยช่องว่าง พร้อมวางในการติดตามโปรโตคอลหรือการบ้าน