ระบบเลขฐานและการแปลงเลขฐาน
บทเสริมนี้ลงลึกกว่าภาพรวมใน IT Foundations มาก โดยอธิบายระบบเลขฐานสี่แบบที่ใช้ในงานคอมพิวเตอร์ — ฐานสอง ฐานแปด ฐานสิบ และฐานสิบหก — พร้อมขั้นตอนการแปลงค่าระหว่างฐานต่าง ๆ อย่างละเอียดและทำซ้ำได้ มีตัวอย่างคำนวณและโจทย์แบบฝึกหัดให้ตรวจคำตอบเองได้ ทุกข้อความเชิงข้อเท็จจริงอ้างอิงจากแหล่งที่น่าเชื่อถือซึ่งระบุไว้ท้ายแต่ละหัวข้อ
01 / 05
ระบบเลขฐานทั้งสี่
ฐานเป็นตัวกำหนดสองสิ่ง: ระบบใช้ตัวเลขที่ต่างกันกี่ตัว และแต่ละหลักมีค่าเท่าใด เมื่อเข้าใจแนวคิด “ค่าประจำหลัก” แล้ว ทุกฐานจะทำงานเหมือนกันหมด
ฐานคืออะไร
ระบบเลขฐาน b ใช้ตัวเลขที่ต่างกัน b ตัวพอดี และแต่ละหลักมีค่าเป็นกำลังของ b เมื่ออ่านจากขวาไปซ้าย ค่าประจำหลักคือ b⁰, b¹, b², b³, … ดังนั้นฐานสอง (binary) ใช้ 0-1 ฐานแปด (octal) ใช้ 0-7 ฐานสิบ (decimal) ใช้ 0-9 และฐานสิบหก (hexadecimal) ใช้ 0-9 แล้วต่อด้วย A-F แทนค่าสิบถึงสิบห้า [1] ความต่างเดียวระหว่างแต่ละระบบคืออัตราการเพิ่มของค่าประจำหลัก: ฐานสองเพิ่มทีละสองเท่า ฐานแปดทีละ ×8 ฐานสิบหกทีละ ×16 [2]
ค่าประจำหลัก: แต่ละหลักคือกำลังของฐาน
| หลัก (นับจากขวา) | ค่าฐานสิบ (10ⁿ) | ค่าฐานสอง (2ⁿ) |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 10 | 2 |
| 2 | 100 | 4 |
| 3 | 1000 | 8 |
| 4 | 10000 | 16 |
| 5 | 100000 | 32 |
ฐานสอง (base-2)
ฐานสองใช้เพียง 0 และ 1 เพราะฮาร์ดแวร์ดิจิทัลเก็บข้อมูลด้วยส่วนประกอบที่สลับระหว่างสองสถานะ (ปิด/เปิด, ต่ำ/สูง) หนึ่งไบต์มี 8 บิต จึงเก็บค่าได้ 2⁸ = 256 ค่า คือ 0 ถึง 255 ฐานสองแม่นยำแต่ยาว จึงมีฐานแปดและฐานสิบหกไว้เป็นรูปแบบย่อ [2]
ฐานแปด (base-8)
ฐานแปดใช้ตัวเลข 0-7 และเลขฐานแปดหนึ่งหลักแทนได้พอดีสามบิต ปัจจุบันยังพบบ่อยในสิทธิ์ไฟล์ของ Unix/Linux ที่ใช้เช่น 0o644 หรือ 0o755 อธิบายบิตอ่าน/เขียน/รัน ในรูปแบบกระชับ [3]
ฐานสิบ (base-10)
ฐานสิบคือระบบที่มนุษย์ใช้ในชีวิตประจำวัน มีตัวเลข 0-9 คอมพิวเตอร์แปลงเข้า-ออกฐานสิบที่ขั้นรับเข้าและแสดงผล แต่ภายในไม่ได้คำนวณด้วยฐานสิบ
ฐานสิบหก (base-16)
ฐานสิบหกใช้ 0-9 แล้วต่อด้วย A-F (A=10 … F=15) และเลขฐานสิบหกหนึ่งหลักแทนได้พอดีสี่บิต เพราะเลขฐานสิบหกสองหลักจับคู่กับหนึ่งไบต์พอดี จึงพบฐานสิบหกได้ทั่วไป: สีในเว็บ (#FF8800) ตำแหน่งหน่วยความจำ ที่อยู่ MAC และค่าแฮช [4]
ตารางอ้างอิง: 0 ถึง 16 ในทั้งสี่ฐาน
| ฐานสิบ | ฐานสอง | ฐานแปด | ฐานสิบหก |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 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 |
ควรจำ 0–15 ให้ได้ จะช่วยให้แปลงทุกครั้งเร็วขึ้น
วิธีเขียนระบุฐาน
เพื่อเลี่ยงความกำกวม เราระบุฐานด้วยคำนำหน้าหรือตัวห้อย: 0b หรือ ₂ สำหรับฐานสอง, 0o หรือ ₈ สำหรับฐานแปด, 0x (หรือ # สำหรับสี) หรือ ₁₆ สำหรับฐานสิบหก และเขียนตัวเลขล้วนสำหรับฐานสิบ ดังนั้น 0b1010, 0o12 และ 0x0A ล้วนหมายถึงฐานสิบ 10 [4]
แบบฝึกหัด — รู้จักฐาน
- 1
ในฐานสิบหก ตัวอักษรใดแทนค่าฐานสิบ 10 ถึง 15?
›ดูเฉลย
คำตอบ: A=10, B=11, C=12, D=13, E=14, F=15
- 2
เลข 0o17 เขียนในฐานใด และมีการกระจายค่าประจำหลักอย่างไร?
›ดูเฉลย
คำตอบ: ฐานแปด (base-8); 1×8 + 7×1
- 3
ในฐานสอง หลักที่ 7 (นับจากขวา เริ่มที่หลัก 0) มีค่าประจำหลักเท่าใด?
›ดูเฉลย
คำตอบ: 2⁷ = 128
- 4
ข้อใดไม่ใช่เลขฐานแปดที่ถูกต้อง: 17, 28, 70?
›ดูเฉลย
คำตอบ: 28 ไม่ถูกต้อง
วิธีทำ
เลขฐานแปดมีตัวเลข 0–7 เท่านั้น28 มีเลข 8 ซึ่งไม่มีในฐานแปด - 5
ใช้ตารางอ้างอิง เขียนฐานสิบ 12 เป็นฐานสอง ฐานแปด และฐานสิบหก
›ดูเฉลย
คำตอบ: 1100₂, 14₈, C₁₆
02 / 05
แปลงฐานใด ๆ เป็นฐานสิบ (ผลรวมถ่วงน้ำหนัก)
ฐานสิบเป็นปลายทางที่ง่ายที่สุดเพราะเราบวกในฐานสิบได้โดยตรง กฎเดียวกันนี้ใช้ได้กับฐานสอง ฐานแปด และฐานสิบหก: คูณแล้วบวก
ขั้นตอน
- 1เขียนค่าประจำหลักของแต่ละหลัก (กำลังของฐาน) โดยเพิ่มจากขวาไปซ้าย
- 2คูณตัวเลขแต่ละหลักด้วยค่าประจำหลักของมัน
- 3บวกผลคูณทั้งหมด ผลรวมคือค่าฐานสิบ
ฐานสอง 11010₂ → ฐานสิบ
ฐานแปด 345₈ → ฐานสิบ
ฐานสิบหก 1A7₁₆ → ฐานสิบ
กฎผลรวมถ่วงน้ำหนักนี้ใช้ได้กับทุกฐาน เปลี่ยนเพียงเลขยกกำลัง (กำลังของ 2, 8 หรือ 16 แทน 10) [1][2]
แบบฝึกหัด — แปลงเป็นฐานสิบ
- 1
101101₂ = ? (ฐานสิบ)
›ดูเฉลย
คำตอบ: 45
วิธีทำ
1×32 + 0×16 + 1×8 + 1×4 + 0×2 + 1×1= 32 + 8 + 4 + 1 = 45 - 2
72₈ = ? (ฐานสิบ)
›ดูเฉลย
คำตอบ: 58
วิธีทำ
7×8 + 2×1 = 56 + 2 = 58 - 3
2C₁₆ = ? (ฐานสิบ)
›ดูเฉลย
คำตอบ: 44
วิธีทำ
C = 122×16 + 12×1 = 32 + 12 = 44 - 4
11111111₂ = ? (ฐานสิบ)
›ดูเฉลย
คำตอบ: 255
วิธีทำ
128+64+32+16+8+4+2+1 = 255 - 5
FF₁₆ = ? (ฐานสิบ)
›ดูเฉลย
คำตอบ: 255
วิธีทำ
15×16 + 15×1 = 240 + 15 = 255
03 / 05
แปลงฐานสิบเป็นฐานใด ๆ (หารแล้วเก็บเศษ)
ในทางกลับกัน ให้หารด้วยฐานปลายทางซ้ำ ๆ แล้วนำเศษมาอ่านย้อนกลับเป็นคำตอบ
ขั้นตอน
การแปลงจำนวนฐานสิบให้เป็นฐาน b:
- 1หารจำนวนด้วยฐานปลายทาง b
- 2จดผลหาร (quotient) และเศษ (remainder)
- 3ทำซ้ำกับผลหารจนกว่าจะเหลือ 0
- 4อ่านเศษจากล่างขึ้นบน นั่นคือคำตอบ [1]
156 → ฐานสอง (หารด้วย 2)
156 → ฐานสิบหก (หารด้วย 16)
100 → ฐานแปด (หารด้วย 8)
ตรวจคำตอบเสมอด้วยการแปลงกลับเป็นฐานสิบด้วยผลรวมถ่วงน้ำหนัก: 144₈ = 64 + 32 + 4 = 100 ✓
แบบฝึกหัด — แปลงจากฐานสิบ
- 1
45 → ฐานสอง
›ดูเฉลย
คำตอบ: 101101₂
วิธีทำ
45÷2=22 เศษ122÷2=11 เศษ011÷2=5 เศษ15÷2=2 เศษ12÷2=1 เศษ01÷2=0 เศษ1อ่านขึ้น → 101101₂ - 2
200 → ฐานสิบหก
›ดูเฉลย
คำตอบ: C8₁₆
วิธีทำ
200÷16=12 เศษ812÷16=0 เศษ12 (C)อ่านขึ้น → C8₁₆ - 3
83 → ฐานแปด
›ดูเฉลย
คำตอบ: 123₈
วิธีทำ
83÷8=10 เศษ310÷8=1 เศษ21÷8=0 เศษ1อ่านขึ้น → 123₈ - 4
255 → ฐานสิบหก
›ดูเฉลย
คำตอบ: FF₁₆
วิธีทำ
255÷16=15 เศษ15 (F)15÷16=0 เศษ15 (F)อ่านขึ้น → FF₁₆
แหล่งอ้างอิง
04 / 05
ทางลัด: ฐานสอง ↔ ฐานแปดและฐานสิบหก
ระหว่างฐานสองกับฐานแปด/ฐานสิบหก ไม่ต้องผ่านฐานสิบเลย เพราะฐานเหล่านี้เป็นกำลังของสอง จึงเพียงแค่จับกลุ่มบิต
เพราะ 8 = 2³ และ 16 = 2⁴ เลขฐานสองจึงเรียงตรงกับฐานแปดและฐานสิบหกพอดี: เลขฐานแปดหนึ่งหลักคือสามบิต เลขฐานสิบหกหนึ่งหลักคือสี่บิต เราจึงแปลงได้ด้วยการจับกลุ่มบิต ไม่ต้องหารหรือบวก [1][2]
ฐานสอง → ฐานสิบหก
- 1เริ่มจากขวา แบ่งบิตเป็นกลุ่มละ 4 (เรียกว่านิบเบิล)
- 2ถ้ากลุ่มซ้ายสุดไม่ครบ ให้เติมศูนย์นำหน้า
- 3แทนแต่ละกลุ่ม 4 บิตด้วยเลขฐานสิบหก (ใช้ตารางอ้างอิง) [1]
11010110₂ → ฐานสิบหก
ฐานสอง → ฐานแปด
- 1เริ่มจากขวา แบ่งบิตเป็นกลุ่มละ 3
- 2ถ้ากลุ่มซ้ายสุดไม่ครบ ให้เติมศูนย์นำหน้า
- 3แทนแต่ละกลุ่ม 3 บิตด้วยเลขฐานแปด [2]
11010110₂ → ฐานแปด
แปลงกลับ: 2F₁₆ และ 57₈ → ฐานสอง
ใช้ 4 บิตต่อหนึ่งหลักฐานสิบหก และ 3 บิตต่อหนึ่งหลักฐานแปด อย่าสลับขนาดกลุ่มเด็ดขาด [3]
แบบฝึกหัด — จับกลุ่มบิต
- 1
10111100₂ → ฐานสิบหก
›ดูเฉลย
คำตอบ: BC₁₆
วิธีทำ
1011 1100B C→ BC₁₆ - 2
110101₂ → ฐานแปด
›ดูเฉลย
คำตอบ: 65₈
วิธีทำ
110 1016 5→ 65₈ - 3
A9₁₆ → ฐานสอง
›ดูเฉลย
คำตอบ: 10101001₂
วิธีทำ
A = 1010, 9 = 1001→ 10101001₂ - 4
11010₂ → ฐานแปด
›ดูเฉลย
คำตอบ: 32₈
วิธีทำ
แบ่งกลุ่มละ 3 จากขวา: 011 0103 2→ 32₈
05 / 05
โจทย์แบบฝึกหัดรวม
รวมทั้งสี่เทคนิคไว้ด้วยกัน ลองทำลงกระดาษก่อน แล้วจึงเปิดเฉลยเพื่อตรวจวิธีทำของคุณ
โจทย์
- 1
แปลง 11001011₂ เป็นฐานสิบและฐานสิบหก
›ดูเฉลย
คำตอบ: 203 (ฐานสิบ), CB₁₆
วิธีทำ
ฐานสิบ: 128+64+8+2+1 = 203ฐานสิบหก: 1100 1011 → C B → CB₁₆ - 2
แปลง 0xB7 เป็นฐานสิบและฐานสอง
›ดูเฉลย
คำตอบ: 183 (ฐานสิบ), 10110111₂
วิธีทำ
ฐานสิบ: 11×16 + 7 = 176 + 7 = 183ฐานสอง: B = 1011, 7 = 0111 → 10110111₂ - 3
แปลงฐานสิบ 175 เป็นฐานสองและฐานแปด
›ดูเฉลย
คำตอบ: 10101111₂, 257₈
วิธีทำ
ฐานสอง: 128+32+8+4+2+1 = 175 → 10101111₂ฐานแปด: 175÷8=21 เศษ7, 21÷8=2 เศษ5, 2÷8=0 เศษ2 → 257₈ - 4
ค่าใดมากกว่ากัน: 0x2A หรือ 0o52?
›ดูเฉลย
คำตอบ: เท่ากัน (ทั้งคู่คือ 42)
วิธีทำ
0x2A = 2×16 + 10 = 420o52 = 5×8 + 2 = 42 - 5
ไฟล์มีสิทธิ์ 0o644 จงเขียนเป็นฐานสอง (9 บิต)
›ดูเฉลย
คำตอบ: 110100100₂
วิธีทำ
6 = 110, 4 = 100, 4 = 100→ 110 100 100 (rw- r-- r--) - 6
แปลง 11110000₂ เป็นฐานสิบหกและฐานแปด
›ดูเฉลย
คำตอบ: F0₁₆, 360₈
วิธีทำ
ฐานสิบหก: 1111 0000 → F 0 → F0₁₆ฐานแปด: 011 110 000 → 3 6 0 → 360₈