เห็นโค้ดสี #2563EB เห็นสิทธิ์ไฟล์ chmod 755 หรือโจทย์ให้แปลง 11010110 เป็นเลขที่คุ้นเคย ทั้งหมดนี้คือเลขฐานที่ไม่ใช่ฐานสิบ และถ้าเข้าใจหลักเดียวว่า “แต่ละหลักมีน้ำหนักเป็นเลขยกกำลังของฐาน” คุณจะแปลงเองได้ทุกฐานโดยไม่ต้องท่องสูตร
บทความนี้อธิบายเลขฐานสอง ฐานแปด ฐานสิบ และฐานสิบหกแบบทีละขั้น พร้อมตัวอย่างที่คำนวณซ้ำแล้ว และถ้าอยากเช็กคำตอบเร็วๆ ใช้เครื่องมือแปลงเลขฐานออนไลน์ฟรีพิมพ์ช่องไหนก็ได้ ช่องอื่นเปลี่ยนตามทันที
เลขฐานคืออะไร
เลขฐานคือระบบเขียนตัวเลขที่ใช้จำนวนสัญลักษณ์ไม่เท่ากัน ฐานสิบที่เราใช้ทุกวันมี 10 ตัว (0–9) ฐานสองมีแค่ 0 กับ 1 ฐานแปดมี 0–7 ส่วนฐานสิบหกมี 0–9 แล้วต่อด้วยตัวอักษร A–F แทนค่า 10–15 ทุกระบบนี้เป็นระบบ “ตามตำแหน่ง” (positional) คือค่าของแต่ละหลักขึ้นกับตำแหน่งที่มันอยู่ ไม่ใช่แค่ตัวเลขที่เขียน
| ฐาน | ชื่อ | ตัวเลขที่ใช้ | ใช้บ่อยที่สุดในงาน |
|---|---|---|---|
| 2 | Binary | 0, 1 | การเก็บข้อมูลในคอมพิวเตอร์ วงจรดิจิทัล |
| 8 | Octal | 0–7 | สิทธิ์ไฟล์บน Linux/Unix (chmod) |
| 10 | Decimal | 0–9 | ชีวิตประจำวัน |
| 16 | Hexadecimal | 0–9, A–F | รหัสสีเว็บ ที่อยู่หน่วยความจำ ค่าไบต์ |
เลขฐานแต่ละหลักมีน้ำหนักเท่าไร
ลองดูเลขฐานสิบ 2569 ก่อน มันคือ 2×1,000 + 5×100 + 6×10 + 9×1 หรือพูดอีกแบบคือ 2×10³ + 5×10² + 6×10¹ + 9×10⁰ เลขฐานอื่นใช้หลักเดียวกันเป๊ะ แค่เปลี่ยน 10 เป็นฐานของมัน เช่นฐานสอง น้ำหนักของแต่ละหลักจากขวาไปซ้ายคือ 1, 2, 4, 8, 16, 32, 64, 128…
เลขฐานสอง 1011 จึงมีค่า 1×8 + 0×4 + 1×2 + 1×1 = 11 ในฐานสิบ ส่วนฐานสิบหกใช้น้ำหนัก 1, 16, 256, 4,096… เช่น 3A = 3×16 + 10 = 58
ตารางเลขฐาน 0–16 เทียบทุกฐาน
ตารางนี้ช่วยให้เห็นรูปแบบ เช่น ฐานสองเลื่อนหลักทุกครั้งที่ถึงยกกำลังของ 2 (2, 4, 8, 16) ฐานแปดขึ้นหลักใหม่ที่ 8 และฐานสิบหกขึ้นหลักใหม่ที่ 16
| ฐานสิบ | ฐานสอง | ฐานแปด | ฐานสิบหก |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
แปลงเลขฐานสองเป็นฐานสิบ
เขียนน้ำหนักของแต่ละหลักไว้ใต้ตัวเลข แล้วรวมเฉพาะหลักที่เป็น 1 ตัวอย่าง 11010110
| น้ำหนัก | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|
| บิต | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
รวมเฉพาะหลักที่เป็น 1: 128 + 64 + 16 + 4 + 2 = 214 ดังนั้น 11010110 ในฐานสองเท่ากับ 214 ในฐานสิบ
แปลงเลขฐานสิบเป็นฐานสอง ฐานแปด ฐานสิบหก
ใช้วิธีหารซ้ำด้วยฐานที่ต้องการ จดเศษของแต่ละรอบ แล้วอ่านเศษจากล่างขึ้นบน หารจนผลหารเป็น 0 ตัวอย่างแปล 156 เป็นฐานสอง
| การหาร | ผลหาร | เศษ |
|---|---|---|
| 156 ÷ 2 | 78 | 0 |
| 78 ÷ 2 | 39 | 0 |
| 39 ÷ 2 | 19 | 1 |
| 19 ÷ 2 | 9 | 1 |
| 9 ÷ 2 | 4 | 1 |
| 4 ÷ 2 | 2 | 0 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
อ่านเศษจากล่างขึ้นบนได้ 10011100 ถ้าหารด้วย 8 แทนก็ได้ฐานแปด 234 และถ้าหารด้วย 16 จะได้ 9C (156 ÷ 16 = 9 เศษ 12 และ 12 คือตัว C) วิธีเดียวกันใช้ได้กับทุกฐาน แค่เปลี่ยนตัวหาร
ทางลัด: แปลงระหว่างฐานสอง ฐานแปด ฐานสิบหก โดยไม่ต้องผ่านฐานสิบ
เพราะ 8 = 2³ และ 16 = 2⁴ ฐานแปดกับฐานสิบหกจึงเป็นแค่การ “จัดกลุ่ม” ของบิตฐานสอง ไม่ต้องคำนวณอะไร
- ฐานสอง → ฐานแปด: แบ่งบิตเป็นกลุ่มละ 3 ตัวจากขวา แล้วแปลงแต่ละกลุ่ม เช่น 111 101 101 = 7 5 5 = 755
- ฐานสอง → ฐานสิบหก: แบ่งเป็นกลุ่มละ 4 ตัวจากขวา เช่น 1101 0110 = D 6 = D6 (ตรวจ: 13×16 + 6 = 214 ตรงกับตัวอย่างข้างบน)
- ย้อนกลับ: แยกแต่ละหลักเป็นบิต 3 หรือ 4 ตัว เช่น 2F = 0010 1111
ทางลัดนี้คือเหตุผลที่โปรแกรมเมอร์ชอบฐานสิบหก เพราะ 1 ไบต์ (8 บิต) เขียนได้พอดี 2 หลัก ตั้งแต่ 00 ถึง FF (0–255) แทนที่จะต้องเขียนเลขสอง 8 ตัวยาวๆ
เลขฐานอยู่ตรงไหนในชีวิตจริง
รหัสสีเว็บ (HEX color)
รหัสสีแบบ #RRGGBB คือเลขฐานสิบหก 3 คู่ แทนความเข้มของแดง เขียว น้ำเงิน แต่ละคู่มีค่า 00–FF หรือ 0–255 ตามมาตรฐาน CSS ที่ MDN อธิบายไว้ ยกตัวอย่างสีน้ำเงิน #2563EB แยกเป็น 25 = 37, 63 = 99, EB = 235 ได้สี RGB (37, 99, 235)
สิทธิ์ไฟล์บน Linux (chmod)
สิทธิ์ไฟล์ใช้เลขฐานแปด 3 หลัก แทนเจ้าของไฟล์ กลุ่ม และคนอื่นตามลำดับ โดยอ่าน (read) = 4, เขียน (write) = 2, รัน (execute) = 1 แล้วบวกกัน ดังนั้น 755 คือเจ้าของทำได้ทั้งหมด (4+2+1 = 7) ส่วนกลุ่มกับคนอื่นอ่านและรันได้ (4+1 = 5) ถ้าเขียนเป็นบิตคือ 111 101 101 ซึ่งตรงกับตัวอย่างทางลัดข้างบนพอดี และเมื่อแปลงเป็นฐานสิบจะได้ 493
ตัวอักษรในคอมพิวเตอร์ (ASCII)
ในตาราง ASCII ตัวอักษร A มีค่า 65 ในฐานสิบ หรือ 41 ในฐานสิบหก และเก็บเป็นบิต 01000001 (1 ไบต์) ลองแปล 65 เป็นฐานสองด้วยวิธีหารซ้ำดู ควรได้ 1000001 ซึ่งเติม 0 ข้างหน้าให้ครบ 8 บิตก็ตรงกัน
ตัวอย่างโจทย์ที่เจอบ่อย พร้อมคำตอบ
| โจทย์ | คำตอบ |
|---|---|
| 255 (ฐานสิบ) เป็นฐานสองและฐานสิบหก | 11111111 และ FF (ฐานแปดคือ 377) |
| 1000 (ฐานสิบ) เป็นฐานสิบหก | 3E8 |
| 100 (ฐานสิบ) เป็นฐานสอง | 1100100 |
| 7F (ฐานสิบหก) เป็นฐานสิบ | 127 |
| 2569 (ฐานสิบ) เป็นฐานสิบหก | A09 |
ตัวอย่างสุดท้ายตรวจได้ว่า A09 = 10×256 + 0×16 + 9 = 2,569 ทุกคำตอบในตารางนี้ลองกรอกในเครื่องมือเพื่อเทียบได้เลย
วิธีใช้เครื่องมือแปลงเลขฐาน
- เปิดหน้าแปลงเลขฐาน
- พิมพ์ตัวเลขในช่องที่ตรงกับฐานที่คุณมี เช่น พิมพ์ 11010110 ในช่องฐานสอง
- ช่องฐานแปด ฐานสิบ และฐานสิบหกจะแสดงค่าที่แปลงแล้วทันที (ตัวอย่างนี้ได้ 326, 214 และ D6)
- ล้างช่องหนึ่งเพื่อเริ่มใหม่ ช่องอื่นจะเคลียร์ตามไปด้วย
ข้อควรรู้: เครื่องมือรองรับเฉพาะจำนวนเต็มบวก ไม่รองรับเลขทศนิยมหรือเลขติดลบ และถ้าพิมพ์ตัวเลขที่ไม่มีในฐานนั้น เช่น 2 ในช่องฐานสอง ช่องอื่นจะไม่เปลี่ยน นอกจากนี้การคำนวณทำบน JavaScript ซึ่งเก็บจำนวนเต็มได้แม่นยำถึง 9,007,199,254,740,991 (2⁵³ − 1) ตามที่ MDN ระบุ ตัวเลขที่ใหญ่กว่านี้อาจคลาดเคลื่อน
คำถามที่พบบ่อย
ทำไมคอมพิวเตอร์ใช้เลขฐานสอง
เพราะวงจรอิเล็กทรอนิกส์แยกสถานะได้ง่ายสุดแค่สองแบบ คือมีสัญญาณกับไม่มีสัญญาณ แทนด้วย 1 กับ 0 ตัวเลขและตัวอักษรทั้งหมดจึงถูกเก็บเป็นลำดับของบิต
ฐานสิบหกใช้ตัวอักษร A–F แทนอะไร
แทนค่า 10 ถึง 15 ตามลำดับ คือ A=10, B=11, C=12, D=13, E=14, F=15 เพราะฐานสิบหกต้องมีสัญลักษณ์ 16 ตัว แต่เลขอารบิกมีแค่ 10 ตัว จะพิมพ์ตัวพิมพ์เล็กหรือใหญ่ก็ได้ค่าเท่ากัน
เลขฐานสอง 8 หลักมีค่ามากสุดเท่าไร
11111111 เท่ากับ 255 ซึ่งคือ 2⁸ − 1 และเป็นค่าสูงสุดของ 1 ไบต์ที่ไม่มีเครื่องหมาย จึงเห็นเลข 255 และ FF บ่อยมากในงานสีและเครือข่าย
แปลงเลขฐานสิบหกเป็นฐานสองยังไงเร็วที่สุด
แปลงทีละหลักเป็นบิต 4 ตัว เช่น B = 1011, 7 = 0111 ดังนั้น B7 = 1011 0111 ไม่ต้องผ่านฐานสิบเลย ผลที่ได้คือ 183 ในฐานสิบ
เลขฐานแปดยังใช้อยู่ไหม
ยังใช้ที่เห็นชัดที่สุดคือสิทธิ์ไฟล์แบบ chmod บน Linux และ macOS เช่น 644 และ 755 ส่วนงานอื่นส่วนใหญ่ใช้ฐานสองหรือฐานสิบหกมากกว่า
สรุป
เลขฐานทุกระบบใช้หลักเดียวกัน คือแต่ละหลักมีน้ำหนักเป็นเลขยกกำลังของฐาน แปลงเข้าฐานสิบด้วยการรวมน้ำหนัก แปลงออกจากฐานสิบด้วยการหารซ้ำ และระหว่างฐานสอง แปด สิบหก ใช้ทางลัดจัดกลุ่มบิต 3 หรือ 4 ตัวได้เลย ถ้าไม่อยากคำนวณมือหรืออยากตรวจคำตอบ ลองใช้เครื่องมือแปลงเลขฐานได้ทันที และถ้าสนใจเรื่องการเข้ารหัสข้อมูลต่อ อ่านเรื่องBase64 คืออะไร, JSON คืออะไร หรือการใช้เครื่องคิดเลขวิทยาศาสตร์เพิ่มเติม