ถ้าจะแปลงเลขจากฐานอื่นมาเป็นฐานสิบ ให้คูณตัวเลขแต่ละหลักด้วยค่าประจำหลักแล้วนำผลทั้งหมดมาบวกกัน ถ้าจะแปลงจากฐานสิบไปเป็นฐาน 2, 8 หรือ 16 ให้หารสั้นด้วยฐานนั้นซ้ำไปเรื่อย ๆ จนผลหารเป็น 0 แล้วอ่านเศษจากล่างขึ้นบน ส่วนการแปลงระหว่างฐาน 2, 8 และ 16 ด้วยกันเองมีทางลัด คือจัดบิตเป็นกลุ่ม กลุ่มละ 3 หรือ 4 บิต
ตัวอย่างหลักของบทนี้คือเลข 156 ซึ่งเขียนเป็นฐานอื่นได้ว่า 10011100₂, 234₈ และ 9C₁₆ จึงตรวจคำตอบจากแต่ละวิธีเทียบกันได้ และตรวจคำตอบซ้ำได้ด้วยสูตร Excel อย่าง DEC2BIN, BASE และ DECIMAL
ตารางเทียบเลขฐาน 10, 2, 8 และ 16 ตั้งแต่ 0 ถึง 15
เลขฐานสิบ 0 ถึง 15 เขียนเป็นเลขฐานสองได้ไม่เกิน 4 บิต ในตารางนี้เติม 0 ทางซ้ายให้ครบ 4 บิตเพื่อให้เทียบกับฐานสิบหกได้หลักต่อหลัก และเขียนเป็นเลขฐานสิบหกได้ในหลักเดียว ถ้าจำตารางนี้ได้ จะใช้ทางลัดทุกแบบในบทนี้ได้เร็วขึ้นมาก
| ฐาน 10 | ฐาน 2 (4 บิต) | ฐาน 8 | ฐาน 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 |
ฐานสิบหกใช้ตัวอักษร A ถึง F แทนค่า 10 ถึง 15 เพราะแต่ละหลักต้องเป็นสัญลักษณ์ตัวเดียว ถ้าเขียน 12 ไว้ในหลักเดียว ผู้อ่านจะแยกไม่ออกว่าเป็นเลขสองหลักคือ 1 กับ 2 หรือเป็นค่า 12
แปลงเลขฐาน 2, 8 และ 16 เป็นเลขฐานสิบด้วยค่าประจำหลัก
การแปลงเลขฐานใดก็ตามเป็นฐานสิบใช้วิธีกระจายตามค่าประจำหลัก ค่าประจำหลักคือฐานยกกำลัง สำหรับจำนวนเต็ม หลักขวาสุดเป็นกำลัง 0 และกำลังจะเพิ่มขึ้นทีละ 1 เมื่อขยับไปทางซ้าย ส่วนหลักหลังจุดทศนิยมใช้กำลังติดลบ เช่น 2⁻¹, 2⁻² และ 2⁻³ จากนั้นนำตัวเลขแต่ละหลักคูณกับค่าประจำหลักของตำแหน่งนั้นแล้วบวกรวมกัน
ตัวอย่าง 10011100₂ เป็นฐานสิบ
| ตัวเลข | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
|---|---|---|---|---|---|---|---|---|
| ค่าประจำหลัก | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1×128 + 0×64 + 0×32 + 1×16 + 1×8 + 1×4 + 0×2 + 0×1 = 156
ในฐานสองไม่ต้องเสียเวลาคูณ เพราะแต่ละหลักมีแค่ 0 หรือ 1 บวกเฉพาะค่าประจำหลักของหลักที่เป็น 1 ก็พอ ในตัวอย่างนี้คือ 128 + 16 + 8 + 4 = 156
ตัวอย่าง 234₈ เป็นฐานสิบ
ค่าประจำหลักของฐานแปดจากขวาไปซ้ายคือ 1, 8 และ 64 (8⁰, 8¹, 8²)
2×64 + 3×8 + 4×1 = 128 + 24 + 4 = 156
ตัวอย่าง 9C₁₆ เป็นฐานสิบ
ก่อนคำนวณให้เปลี่ยนตัวอักษรเป็นตัวเลขตามตาราง ในที่นี้ C มีค่าเท่ากับ 12 ส่วนค่าประจำหลักของฐานสิบหกจากขวาไปซ้ายคือ 1 และ 16
9×16 + 12×1 = 144 + 12 = 156
ทั้งสามแบบได้ 156 เท่ากัน แสดงว่า 10011100₂, 234₈ และ 9C₁₆ คือจำนวนเดียวกันที่เขียนในฐานต่างกัน
แปลงเลขฐานสิบเป็นเลขฐานสอง ฐานแปด และฐานสิบหกด้วยการหารสั้น
การแปลงจำนวนเต็มที่ไม่ติดลบจากฐานสิบเป็นฐานอื่นใช้การหารสั้น โดยหารเลขนั้นด้วยฐานที่ต้องการ จดเศษไว้ แล้วนำผลหารมาหารต่อไปจนผลหารเป็น 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₂ ตรวจกลับด้วย 128 + 16 + 8 + 4 = 156
156 เป็นเลขฐานแปด
| การหาร | ผลหาร | เศษ |
|---|---|---|
| 156 ÷ 8 | 19 | 4 |
| 19 ÷ 8 | 2 | 3 |
| 2 ÷ 8 | 0 | 2 |
อ่านจากล่างขึ้นบนได้ 234₈ ตรวจกลับด้วย 2×64 + 3×8 + 4 = 156
156 เป็นเลขฐานสิบหก
| การหาร | ผลหาร | เศษ |
|---|---|---|
| 156 ÷ 16 | 9 | 12 (เขียนเป็น C) |
| 9 ÷ 16 | 0 | 9 |
อ่านจากล่างขึ้นบนได้ 9C₁₆ ตรวจกลับด้วย 9×16 + 12 = 156 จุดที่ต้องระวังในฐานสิบหกคือ เศษ 10 ถึง 15 ต้องเปลี่ยนเป็น A ถึง F ทุกครั้งก่อนเขียนคำตอบ
ทางลัดแปลงเลขฐาน 2 เป็นฐาน 8 และฐาน 16 ด้วยการจัดกลุ่มบิต
เลขฐานสองแปลงเป็นฐานแปดได้ด้วยการจัดกลุ่มทีละ 3 บิต และแปลงเป็นฐานสิบหกได้ด้วยการจัดกลุ่มทีละ 4 บิต โดยไม่จำเป็นต้องแปลงผ่านฐานสิบ ทางลัดนี้ใช้ได้เพราะ 8 เท่ากับ 2³ และ 16 เท่ากับ 2⁴ สิ่งสำคัญคือต้องเริ่มจัดกลุ่มจากขวาสุด ถ้ากลุ่มซ้ายสุดมีบิตไม่ครบ ให้เติม 0 ทางซ้ายจนครบ
ฐาน 2 เป็นฐาน 8
10011100 มี 8 บิต เมื่อแบ่งทีละ 3 บิตจากขวาจะได้ 100 กับ 011 และเหลือ 10 ทางซ้าย จึงเติม 0 ข้างหน้าเป็น 010 รวมเป็น 010 011 100 แล้วเปลี่ยนแต่ละกลุ่มเป็นตัวเลขตามตารางได้ 2 3 4 คำตอบคือ 234₈
ฐาน 2 เป็นฐาน 16
10011100 แบ่งทีละ 4 บิตได้ 1001 กับ 1100 พอดี เทียบกับตารางได้ 9 กับ C คำตอบคือ 9C₁₆
ฐาน 8 หรือฐาน 16 กลับเป็นฐาน 2
การแปลงกลับก็ทำย้อนกัน คือเลขฐานแปดหนึ่งหลักแตกเป็น 3 บิต และเลขฐานสิบหกหนึ่งหลักแตกเป็น 4 บิต เช่น 9C₁₆ เขียนได้เป็น 1001 1100 หรือ 10011100₂ และ 234₈ แตกได้เป็น 010 011 100 เมื่อตัด 0 ซ้ายสุดออกจะได้ 10011100₂ เช่นกัน
ฐาน 8 เป็นฐาน 16 ผ่านฐาน 2
ฐานแปดกับฐานสิบหกจัดกลุ่มแปลงหากันตรง ๆ ไม่ได้ วิธีที่สะดวกคือใช้ฐานสองเป็นตัวกลาง เพราะเลขฐานแปดหนึ่งหลักแทนด้วย 3 บิต และเลขฐานสิบหกหนึ่งหลักแทนด้วย 4 บิต อีกวิธีคือแปลงเป็นฐานสิบก่อนแล้วจึงแปลงเป็นฐานสิบหก
- เปลี่ยนเลขฐานแปดทีละหลักเป็น 3 บิต เช่น 234₈ ได้ 010 011 100
- นำมาต่อกันเป็น 010011100
- จัดกลุ่มใหม่ทีละ 4 บิตจากขวา ได้ 1100 กับ 1001 และเหลือ 0 ทางซ้าย จึงเติม 0 ให้ครบกลุ่มเป็น 0000 1001 1100
- เปลี่ยนแต่ละกลุ่มตามตารางได้ 0 9 C ตัด 0 ข้างหน้าทิ้ง คำตอบคือ 9C₁₆
ส่วนการแปลงฐานสิบหกเป็นฐานแปดก็ทำย้อนลำดับเดียวกัน คือแตกเป็นกลุ่มละ 4 บิตก่อน แล้วจึงจัดกลุ่มใหม่ทีละ 3 บิต
แปลงเศษทศนิยมเป็นเลขฐานสองด้วยการคูณ 2
ส่วนหลังจุดทศนิยมแปลงเป็นฐานสองด้วยการคูณ 2 ซ้ำ ๆ แทนการหาร ทุกครั้งที่คูณให้จดเลขจำนวนเต็มหน้าจุดไว้ แล้วนำเฉพาะส่วนหลังจุดไปคูณต่อ
| การคูณ | ผลคูณ | จำนวนเต็มที่เก็บไว้ |
|---|---|---|
| 0.625 × 2 | 1.25 | 1 |
| 0.25 × 2 | 0.5 | 0 |
| 0.5 × 2 | 1.0 | 1 |
อ่านจากบนลงล่างจะได้ 0.625 = 0.101₂ ตรวจกลับด้วย 1×0.5 + 0×0.25 + 1×0.125 = 0.625 ให้หยุดคูณเมื่อส่วนหลังจุดเป็น 0 แต่บางจำนวนคูณไปเท่าไรก็ไม่ลงตัว กรณีนี้ให้หยุดเมื่อได้จำนวนตำแหน่งตามที่โจทย์กำหนด
ตรวจคำตอบการแปลงเลขฐานด้วยสูตร Excel
คำตอบที่คิดด้วยมือนำไปตรวจใน Excel ได้ด้วยฟังก์ชันสามตัว คือ DEC2BIN ที่แปลงฐานสิบเป็นฐานสอง BASE ที่แปลงฐานสิบเป็นฐานใดก็ได้ตั้งแต่ 2 ถึง 36 และ DECIMAL ที่แปลงกลับเป็นฐานสิบ ขอบเขตในตารางนี้อ้างอิงจากหน้าวิธีใช้อย่างเป็นทางการของ Microsoft ณ วันที่ 29 ตุลาคม 2569 ได้แก่หน้า ฟังก์ชัน DEC2BIN หน้า ฟังก์ชัน BASE และหน้า ฟังก์ชัน DECIMAL
| ฟังก์ชัน | ใช้ทำอะไร | ขอบเขตตามหน้าวิธีใช้ | ตัวอย่างจาก Microsoft |
|---|---|---|---|
| DEC2BIN(number, [places]) | ฐานสิบเป็นฐานสอง | number ต้องอยู่ระหว่าง -512 ถึง 511 ถ้าอยู่นอกช่วงนี้จะได้ #NUM! | =DEC2BIN(9, 4) ได้ 1001 |
| BASE(Number, Radix, [Min_length]) | ฐานสิบเป็นฐาน 2 ถึง 36 | Number เป็นจำนวนเต็มตั้งแต่ 0 แต่ต้องน้อยกว่า 2⁵³ ส่วน Radix อยู่ระหว่าง 2 ถึง 36 และ Min_length ไม่เกิน 255 | =BASE(100,16) ได้ 64 |
| DECIMAL(text, radix) | ฐานอื่นกลับเป็นฐานสิบ | text ยาวไม่เกิน 255 อักขระ ไม่แยกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และ radix อยู่ระหว่าง 2 ถึง 36 | =DECIMAL("FF",16) ได้ 255 |
ถ้าใส่ค่าที่ไม่ใช่ตัวเลขใน DEC2BIN หรือ BASE จะได้ #VALUE! นอกจากนี้ BASE จะตัดส่วนทศนิยมของ Number ทิ้ง จึงใช้ตรวจการแปลงเศษทศนิยมแบบในหัวข้อก่อนไม่ได้ ส่วน DECIMAL จะเริ่มเสียความแม่นยำเมื่อค่าเกิน 2⁵³ ตามที่หน้าวิธีใช้ระบุ สำหรับ BASE หน้าวิธีใช้ระบุว่าใช้ได้ใน Microsoft 365 (Windows และ Mac) รวมถึง Excel 2024, 2021, 2019 และ 2016
ถ้าโจทย์ต้องการคำตอบที่มีจำนวนบิตตายตัว ให้ใส่อาร์กิวเมนต์ตัวที่สามเพื่อเติม 0 ทางซ้าย เช่น =BASE(16,2) ได้ 10000 ส่วน =BASE(16,2,8) ได้ 00010000 ถ้าผลลัพธ์ยาวกว่าค่าที่กำหนด BASE จะแสดงผลเต็มตามปกติ เพราะค่านี้เป็นความยาวขั้นต่ำ ส่วน DEC2BIN ใช้ places เติม 0 ได้เหมือนกัน แต่ถ้าผลลัพธ์ยาวกว่าจำนวนหลักที่กำหนด Excel จะแสดง #NUM!
DEC2BIN รับเลขติดลบได้ด้วย โดยหน้าวิธีใช้ระบุว่าผลจะเป็นเลขฐานสอง 10 หลักในรูปส่วนเติมเต็มสอง (two's complement) ซึ่งบิตซ้ายสุดเป็นบิตเครื่องหมาย และค่า places จะไม่มีผล ตัวอย่างในหน้าวิธีใช้คือ =DEC2BIN(-100) ได้ 1110011100 ส่วน BASE รับเฉพาะเลขตั้งแต่ 0 ขึ้นไป
ตรวจเลข 156 ทั้งสี่ฐานใน Excel
ผลในตารางนี้คำนวณจากเลขคณิตในบทความ ลองพิมพ์สูตรลงในไฟล์ของคุณเองแล้วเทียบดู
| สูตร | ผลที่ควรได้ | หมายเหตุ |
|---|---|---|
| =DEC2BIN(156) | 10011100 | ใช้ได้เพราะ 156 ไม่เกิน 511 |
| =BASE(156,8) | 234 | ใช้ BASE สำหรับฐานแปด |
| =BASE(156,16) | 9C | ใช้ BASE สำหรับฐานสิบหก |
| =DECIMAL("9C",16) | 156 | แปลงกลับเป็นฐานสิบ |
| =DECIMAL("10011100",2) | 156 | ตรวจคำตอบฐานสอง |
ข้อผิดพลาดที่พบบ่อยในการแปลงเลขฐาน
ข้อผิดพลาดที่พบบ่อยในการแปลงเลขฐานคือ อ่านเศษผิดทิศ ไม่เติม 0 ก่อนจัดกลุ่มบิต เขียนเศษ 10 ถึง 15 เป็นเลขสองหลักในฐานสิบหก และใช้ DEC2BIN กับเลขที่เกิน 511 ข้อผิดพลาดเหล่านี้มักสังเกตได้จากรูปแบบของคำตอบ ถ้าคำตอบดูแปลก ๆ ลองเทียบกับตารางนี้ก่อนจะลงมือทำใหม่ทั้งข้อ
| ข้อผิดพลาด | อาการ | วิธีแก้ |
|---|---|---|
| อ่านเศษจากบนลงล่าง | 156 กลายเป็น 00111001 | อ่านจากเศษตัวสุดท้ายย้อนขึ้นไป |
| ไม่เติม 0 ทางซ้ายก่อนจัดกลุ่ม | 10011100 ถูกแบ่งจากซ้ายเป็น 100 111 00 กลุ่มท้ายจึงไม่ครบ 3 บิต | เริ่มแบ่งจากขวา แล้วเติม 0 ทางซ้ายให้ครบกลุ่ม |
| เขียนเศษ 12 เป็น “12” ในฐาน 16 | ได้ 912 แทนที่จะเป็น 9C | ใช้ A ถึง F แทนค่า 10 ถึง 15 |
| ใช้ DEC2BIN กับเลขที่เกิน 511 | Excel แสดง #NUM! | ใช้ =BASE(เลข,2) แทน |
การแปลงข้อความเป็นเลขฐานสองต่างจากการแปลงจำนวน
การแปลงข้อความเป็นเลขฐานสองคือการแปลงค่าไบต์ของข้อความทีละไบต์ ไม่ใช่การเปลี่ยนจำนวนจากฐานหนึ่งไปอีกฐาน Digily Link เป็นผลิตภัณฑ์ของเรา และเครื่องมือ “ตัวแปลงเลขฐานสอง” บน digily.link ก็ทำงานแบบนี้ คือแปลง “ข้อความ” เป็นรหัสไบต์ ไม่ได้แปลงจำนวน ถ้าพิมพ์ 156 ลงไป เครื่องมือจะแปลงอักขระ 1, 5 และ 6 ทีละตัว ผลที่ได้จึงเป็น 110001 110101 110110 ไม่ใช่ 10011100
เครื่องมือ “ตัวแปลงเลขฐานสิบหก” และ “ตัวแปลงเลขทศนิยม” บนเว็บเดียวกันก็ทำงานกับข้อความเช่นกัน ชื่อ “ตัวแปลงเลขทศนิยม” อาจทำให้เข้าใจว่าใช้แปลงเศษทศนิยม แต่ที่จริงเครื่องมือนี้ให้ค่าฐานสิบของแต่ละไบต์ในข้อความ โจทย์คณิตศาสตร์แบบในบทความนี้จึงควรคิดด้วยมือแล้วตรวจด้วยสูตร Excel ในหัวข้อข้างต้น สำหรับข้อความภาษาไทยที่เข้ารหัสแบบ UTF-8 อักขระหนึ่งตัวอาจมีหลายไบต์ เครื่องมือจึงอาจแสดงเลขฐานสองหลายชุดสำหรับอักขระตัวเดียว และผลแต่ละชุดไม่ได้เติม 0 ทางซ้ายให้ครบ 8 บิต
ถ้าต้องการแปลงข้อความเป็นเลขฐานสอง ใช้ตัวแปลงเลขฐานสองสำหรับแปลงข้อความเป็นรหัสไบต์ได้
คำถามที่พบบ่อย
แปลงเลขฐาน 8 เป็นเลขฐาน 16 ทำอย่างไร
วิธีที่สะดวกคือแปลงผ่านฐานสอง เช่น 375₈ แตกแต่ละหลักเป็น 3 บิตได้ 011 111 101 นำมาต่อกันแล้วจัดกลุ่มใหม่ทีละ 4 บิตจากขวา โดยเติม 0 ทางซ้ายให้ครบกลุ่ม ได้ 0000 1111 1101 เมื่อเทียบตารางจะได้ FD₁₆ ตรวจกลับได้ทั้งสองทาง เพราะ 3×64 + 7×8 + 5 = 253 และ 15×16 + 13 = 253 เท่ากัน
อ่านเศษจากล่างขึ้นบนหรือบนลงล่าง
สำหรับจำนวนเต็มที่แปลงด้วยการหารสั้น ให้อ่านเศษจากล่างขึ้นบน แต่สำหรับเศษทศนิยมที่แปลงด้วยการคูณ ให้อ่านจำนวนเต็มที่ได้จากบนลงล่าง ทั้งสองวิธีอ่านผลคนละทิศทางเพราะหลักแรกที่ได้จากการหารคือหลักขวาสุด ส่วนหลักแรกที่ได้จากการคูณคือหลักที่อยู่ถัดจากจุดทศนิยมทันที
ทำไมเลข 1 ไบต์เขียนเป็นฐานสิบหกได้ 2 หลักพอดี
1 ไบต์มี 8 บิต แบ่งเป็นกลุ่มละ 4 บิตได้สองกลุ่มพอดี และแต่ละกลุ่มตรงกับเลขฐานสิบหกหนึ่งหลัก เมื่ออ่านเป็นจำนวนเต็มแบบไม่มีเครื่องหมาย ค่าสูงสุดของ 1 ไบต์คือ 11111111₂ ซึ่งเขียนได้เป็น FF₁₆ หรือ 255 ในฐานสิบ ตรงกับตัวอย่าง =DECIMAL("FF",16) ในหน้าวิธีใช้ของ Microsoft