วิธีแปลงเลขฐาน (Binary, Octal, Hex) พร้อมตัวอย่าง

วิธีแปลงเลขฐาน (Binary, Octal, Hex) พร้อมตัวอย่าง

เลขฐานที่ใช้บ่อย: ฐาน 2 (Binary) ฐาน 8 (Octal) ฐาน 10 (Decimal) และฐาน 16 (Hexadecimal) การแปลงระหว่างฐานเป็นพื้นฐานของคอมพิวเตอร์และเครือข่าย

เลขฐานคืออะไร

  • ฐาน 2 (Binary): 0, 1 — ใช้ในคอมพิวเตอร์
  • ฐาน 8 (Octal): 0-7 — สิทธิ์ไฟล์ใน Linux
  • ฐาน 10 (Decimal): 0-9 — ตัวเลขที่เราใช้ทุกวัน
  • ฐาน 16 (Hex): 0-9, A-F — สีในเว็บ, ที่อยู่ MAC

วิธีแปลงจากเลขฐาน 10

หารด้วยฐานซ้ำๆ เก็บเศษ แล้วอ่านเศษจากท้ายมาหน้า

ตัวอย่าง: 13 (ฐาน 10) → ฐาน 2:

  • 13 ÷ 2 = 6 เศษ 1
  • 6 ÷ 2 = 3 เศษ 0
  • 3 ÷ 2 = 1 เศษ 1
  • 1 ÷ 2 = 0 เศษ 1

อ่านจากท้าย: 1101

วิธีแปลงเลขฐานอื่นเป็นฐาน 10

คูณแต่ละหลักด้วยฐานยกกำลังตำแหน่ง แล้วรวมกัน

ตัวอย่าง: 1101 (ฐาน 2) = 1×8 + 1×4 + 0×2 + 1×1 = 13

ตารางแปลงเร็ว

ฐาน 10ฐาน 2ฐาน 16
000
111
101010A
151111F
25511111111FF

ใช้กับอะไรบ้าง

  • เขียนโปรแกรมและวิเคราะห์ระบบ
  • ตั้งสิทธิ์ไฟล์ Linux (chmod 755)
  • ทำงานกับสีและเครือข่าย

ลองใช้ เครื่องแปลงเลขฐาน เพื่อแปลงทันที

เทคนิคแปลงเลขฐาน 10 → ฐาน 16 แบบไม่ต้องหารเยอะ

จากประสบการณ์ทำเว็บให้ร้านค้าไทยและคนที่เริ่มหัดเขียนโค้ด ทีมงานเราพบว่าหลายคนติดตรงการแปลงเป็นฐาน 16 เพราะตัวเลขเยอะ หารหลายรอบ เลขจำง่ายคือ แปลงเป็นฐาน 2 ก่อน แล้วจับทีละ 4 บิต

ตัวอย่าง: 200 (ฐาน 10) → ฐาน 2 = 11001000 → แบ่ง 4 บิตจากขวา: 1100 | 1000 → C | 8 = C8

ฐาน 10ฐาน 2แบ่ง 4 บิตฐาน 16
9100110019
481100000011 000030
200110010001100 1000C8
100011111010000011 1110 10003E8

วิธีนี้เร็วกว่าการหารด้วย 16 ซ้ำๆ เพราะเลขฐาน 2 คนส่วนใหญ่จำค่าตำแหน่งได้คล่องกว่า

เลขฐานกับสีในเว็บ: แปลงเองได้จริง

รหัสสี เช่น #FF6600 ที่เห็นในโปรแกรมออกแบบคือฐาน 16 คู่ละ 1 สี (R-G-B) ลองถอดคู่ 66 ดู:

  • 6 (ฐาน 16) = 0110 (ฐาน 2) = 102 (ฐาน 10)

แปลว่าสีแดง FF = 255 เต็มที่ เขียว 66 = 102 กลางๆ น้ำเงิน 00 = ไม่มี ก็คือสีส้มค่อนข้างสว่าง นั่นเอง ทีมงานเราว่าการเข้าใจตรงนี้ช่วยให้ปรับสีตอนแก้ CSS ได้เองโดยไม่ต้องเปิดตัวเลือกสีทุกครั้ง

สิทธิ์ไฟล์ Linux: เลขฐาน 8 ที่เจอจริง

คำสั่ง chmod 755 ที่เห็นบ่อยคือฐาน 8 โดยแต่ละหลักแทนเจ้าของไฟล์ กลุ่ม และคนอื่น แต่ละเลขแปลงเป็นฐาน 2 สามหลักได้:

เลข (ฐาน 8)ฐาน 2สิทธิ์
7111อ่าน + เขียน + รัน
5101อ่าน + รัน
4100อ่านอย่างเดียว
6110อ่าน + เขียน

ดังนั้น 755 = เจ้าของทำได้ทุกอย่าง ส่วนอื่นอ่านและรันได้อย่างเดียว

สิ่งที่ผู้ใช้จริงถามเราบ่อย

ถาม: ทำไมต้องมีหลายฐาน ใช้ฐาน 10 อย่างเดียวไม่ได้เหรอ? ตอบ: คอมพิวเตอร์เก็บข้อมูลเป็นไฟ (มี/ไม่มี) จึงเป็นฐาน 2 โดยธรรมชาติ ฐาน 16 เข้ามาช่วยย่อเลขฐาน 2 ยาวๆ ให้อ่านง่าย เช่น 1 ไบต์ (8 บิต) กลายเป็นแค่ 2 ตัวอักษร ส่วนฐาน 8 เก่ากว่าและยังเหลืออยู่ในระบบ Unix/Linux

ถาม: แปลงเลขมีทศนิยม เช่น 10.5 ยังไง? ตอบ: ส่วนจำนวนเต็มใช้วิธีหารตามปกติ ส่วนทศนิยมใช้วิธีคูณด้วยฐานซ้ำๆ แล้วเก็บเลขหน้าจุด เช่น 0.5 × 2 = 1.0 เก็บ 1 ก็จบ ได้ 0.1 ในฐาน 2 ข้อควรระวังคือทศนิยมบางตัวแปลงแล้วไม่รู้จบ เช่น 0.1 ในฐาน 2 เป็นทศนิยมซ้ำ ซึ่งเป็นที่มาของปัญหาการตัดเลขทศนิยมในโปรแกรม

ถาม: เลขลบแปลงยังไง? ตอบ: ในคอมพิวเตอร์ใช้ระบบ Two’s Complement คือกลับบิตทั้งหมดแล้วบวก 1 เช่น ใน 8 บิต -1 จะเป็น 11111111 เหมาะสำหรับคนที่เรียนเขียนโปรแกรมระดับลึก แต่ถ้าแค่ทำการบ้านแปลงเลข ปกติจะพูดถึงเลขไม่ติดลบเท่านั้น

ถาม: จำได้ว่าเคยเรียนมา แต่ลืมหมดแล้ว เริ่มยังไงดี? ตอบ: ทีมงานเราแนะนำให้จำแค่ตารางเลขฐาน 2 สี่หลักแรก (8-4-2-1) จะแก้โจทย์ได้เกือบทั้งหมด เช่น เห็น 1101 ก็บวก 8+4+0+1 = 13 ทันที ที่เหลือลองเขียนตามตัวอย่างในบทความนี้สัก 2