โปรแกรมแปลงเลขฐาน 2, 8, 10, 16 และฐานใดก็ได้ (2–36)
แปลงฐานสิบเป็นฐาน b ให้หารด้วย b ซ้ำ ๆ แล้วอ่านเศษจากล่างขึ้นบน ส่วนการแปลงฐาน b เป็นฐานสิบให้คูณแต่ละหลักด้วย b ยกกำลังตำแหน่งแล้วบวกกัน เช่น 156₁₀ = 10011100₂ = 234₈ = 9C₁₆ และ 10011100₂ = 128 + 16 + 8 + 4 = 156
ประวัติการคำนวณ (เก็บในเครื่องนี้)
วิธีใช้แปลงเลขฐาน
- พิมพ์ตัวเลข เช่น 156 หรือ 1011.101 หรือ 9C (ตัวพิมพ์เล็กหรือใหญ่ก็ได้)
- เลือกฐานตั้งต้นและฐานปลายทาง ถ้าเป็นฐานอื่น เช่น ฐานห้า ให้เลือก “กำหนดเอง” แล้วใส่ 2–36
- ดูผลลัพธ์ในฐาน 2, 8, 10, 16 พร้อมวิธีทำแบบหารสั้น การกระจายค่าประจำหลัก และการจัดกลุ่มบิต
หลักการแปลงเลขฐาน
(dₙ…d₁d₀)ᵦ = dₙ×bⁿ + … + d₁×b¹ + d₀×b⁰
- ฐานสิบ → ฐาน b (จำนวนเต็ม): หารด้วย b ไปเรื่อย ๆ จนผลหารเป็น 0 แล้วนำเศษมาเรียงจากล่างขึ้นบน
- ฐานสิบ → ฐาน b (ทศนิยม): คูณส่วนทศนิยมด้วย b ซ้ำ ๆ แล้วเก็บจำนวนเต็มหน้าจุดจากบนลงล่าง
- ฐาน b → ฐานสิบ: คูณแต่ละหลักด้วยค่าประจำหลัก (b ยกกำลังตำแหน่ง เริ่มจาก 0 ทางขวา) แล้วบวกกัน หลักหลังจุดใช้กำลังติดลบ
- ฐานสอง ↔ ฐานแปด/สิบหก: จัดกลุ่มบิตทีละ 3 หลัก (ฐานแปด) หรือทีละ 4 หลัก (ฐานสิบหก) เริ่มจากจุดทศนิยม
| ฐานสิบ | ฐานสอง | ฐานแปด | ฐานสิบหก |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 5 | 0101 | 5 | 5 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 12 | 1100 | 14 | C |
| 15 | 1111 | 17 | F |
ตัวอย่างการคำนวณ
โจทย์: แปลง 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₂ จัดกลุ่มทีละ 4 บิตเป็น 1001 1100 = 9 และ C จึงได้ 9C₁₆
ตรวจกลับ: 1×2⁷ + 1×2⁴ + 1×2³ + 1×2² = 128 + 16 + 8 + 4 = 156 ✓
เลขติดลบในคอมพิวเตอร์: two’s complement
คอมพิวเตอร์เก็บจำนวนเต็มติดลบด้วยวิธี two’s complement (ส่วนเติมเต็มฐานสอง) ในจำนวนบิตที่กำหนด เช่น 8 บิต วิธีหาคือเขียนค่าสัมบูรณ์เป็นฐานสองให้ครบจำนวนบิต กลับบิตทุกตัว (0↔1) แล้วบวก 1
ตัวอย่าง −5 แบบ 8 บิต: 5 = 0000 0101 → กลับบิต 1111 1010 → บวก 1 ได้ 1111 1011 (= FB₁₆) ซึ่งเท่ากับ 2⁸ − 5 = 251 เมื่อมองแบบไม่มีเครื่องหมาย
| จำนวนบิต | ช่วงค่า signed | ช่วงค่า unsigned |
|---|---|---|
| 8 บิต | −128 ถึง 127 | 0 ถึง 255 |
| 16 บิต | −32,768 ถึง 32,767 | 0 ถึง 65,535 |
| 32 บิต | −2,147,483,648 ถึง 2,147,483,647 | 0 ถึง 4,294,967,295 |
ทำไมทศนิยมบางตัวแปลงเป็นฐานสองไม่จบ
ทศนิยมฐานสิบจะแปลงเป็นฐานสองได้จบก็ต่อเมื่อเขียนเป็นเศษส่วนที่ตัวส่วนเป็นกำลังของ 2 ได้ เช่น 0.375 = 3/8 = 0.011₂ แต่ 0.1 = 1/10 มีตัวประกอบ 5 อยู่ในตัวส่วน จึงได้ 0.0(0011)₂ ซ้ำไม่รู้จบ นี่คือเหตุผลที่ 0.1 + 0.2 ในโปรแกรมคอมพิวเตอร์ได้ 0.30000000000000004
โปรแกรมนี้คำนวณเศษส่วนแบบแม่นตรง ถ้าพบรูปแบบซ้ำจะแสดงส่วนที่ซ้ำไว้ในวงเล็บ เช่น 0.0(0011) หมายถึง 0.0001100110011…
คำถามที่พบบ่อย
แปลงเลขฐานสิบเป็นฐานสองทำอย่างไร
นำเลขฐานสิบหารด้วย 2 ไปเรื่อย ๆ จดเศษ (0 หรือ 1) ทุกครั้งจนผลหารเป็น 0 แล้วอ่านเศษจากล่างขึ้นบน เช่น 13 → 1101₂
เลขฐานสิบหก A–F มีค่าเท่าไร
A = 10, B = 11, C = 12, D = 13, E = 14 และ F = 15 ฐานที่มากกว่า 16 ก็ใช้ตัวอักษรต่อไปจนถึง Z = 35 (ฐาน 36)
ทำไมโปรแกรมเมอร์ชอบใช้เลขฐานสิบหก
เพราะเลขฐานสิบหก 1 หลักแทนบิตได้พอดี 4 บิต อ่านและเขียนค่าไบต์ได้สั้นกว่าฐานสอง เช่น 1111 1111₂ = FF₁₆ = 255
แปลงเลขฐานห้าหรือฐานอื่นได้ไหม
ได้ เลือก “กำหนดเอง” แล้วใส่ฐาน 2 ถึง 36 เช่น 41₁₀ = 131₅ เพราะ 1×25 + 3×5 + 1 = 41