วิธีแปลง hex เป็น binary
- ป้อนเลขฐานสิบหก เช่น
3Fหรือ0xDEADหรือวางรายการตัวเลขบรรทัดละหนึ่งค่าก็ได้ - ผลลัพธ์ฐานสองจะแสดงทันที ติ๊ก จัดกลุ่มตัวเลข เพื่อแบ่งเป็น nibble หรือ มีเครื่องหมาย เพื่อเติมให้ครบ 8, 16, 32 หรือ 64 บิต
- ดูวิธีทำทีละขั้นที่จับคู่เลข hex แต่ละหลักกับ 4 บิตของมัน แล้วคัดลอกค่าฐานสองไปใช้
ตารางแปลงเลขฐาน 16 เป็นฐาน 2
เลข hex แต่ละหลักตรงกับกลุ่ม 4 บิตหนึ่งกลุ่ม เรียกว่า nibble จำหรือบุ๊กมาร์กตารางนี้ไว้ แล้วคุณจะแปลงเลขฐานสิบหกใด ๆ เป็นฐานสองด้วยมือได้
| ฐาน 16 | ฐาน 2 | ฐาน 10 |
|---|---|---|
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
A | 1010 | 10 |
B | 1011 | 11 |
C | 1100 | 12 |
D | 1101 | 13 |
E | 1110 | 14 |
F | 1111 | 15 |
วิธีแปลงเลขฐานสิบหกเป็นเลขฐานสอง
เนื่องจาก 16 = 2⁴ เลข hex หนึ่งหลักจึงแทน 4 บิตพอดีเสมอ และ hex สองหลักแทนหนึ่งไบต์ วิธีแปลงคือแทนแต่ละหลักด้วยรูปแบบ 4 บิตจากตาราง แล้วเขียนแต่ละกลุ่มเรียงต่อกัน:
2F9 → 2 = 0010, F = 1111, 9 = 1001 → 0010 1111 1001
ตัด 0 ที่นำหน้าออกได้ จะได้ 1011111001 (761 ในฐานสิบ) แต่เลข 0 ที่อยู่ภายในตัวเลขต้องคงไว้: C3 คือ 1100 0011 ไม่ใช่ 11 0011
ในโค้ด: Python format(int('2F9', 16), 'b'), JavaScript parseInt('2F9', 16).toString(2) (หรือ BigInt('0x' + hex).toString(2) สำหรับค่าที่ยาว) ส่วน Excel =HEX2BIN("1A", 8) ได้ 00011010 แต่ใช้ได้ถึงแค่ 1FF เท่านั้น
คำถามที่พบบ่อย
ทำไม hex หนึ่งหลักจึงเท่ากับ 4 บิต?
เพราะ 16 = 2⁴ บิต 4 บิตมีรูปแบบได้ 16 แบบพอดี คือ 0000 ถึง 1111 ตรงกับเลข hex แต่ละหลักตั้งแต่ 0 ถึง F ทำให้ hex เป็นวิธีเขียนเลขฐานสองที่กระชับ: hex สองหลักแทนหนึ่งไบต์
FF ในเลขฐานสองคืออะไร?
FF คือ 1111 1111 ในฐานสอง – เลข 1 แปดตัว ซึ่งเป็นค่าสูงสุดของหนึ่งไบต์ (255 ในฐานสิบ)
ควรเก็บเลข 0 ที่นำหน้าไว้ไหม?
เลข 0 ที่นำหน้าไม่ทำให้ค่าเปลี่ยน: 0001 1010 และ 11010 ต่างก็เท่ากับ 26 ให้เก็บไว้เมื่อต้องการความยาวคงที่ เช่น หนึ่งไบต์เต็มหรือรีจิสเตอร์ โดยติ๊ก “จัดกลุ่มตัวเลข” หรือ “มีเครื่องหมาย” เพื่อเติม 0 ให้ผลลัพธ์
แปลงเลขฐานสิบหกที่มีจุดทศนิยมได้ไหม?
ได้ หลักหลังจุดก็แทนด้วย 4 บิตเช่นกัน ดังนั้น 1A.8 = 0001 1010.1000 = 11010.1 ในฐานสอง ซึ่งเท่ากับ 26.5 ในฐานสิบ