วิธีแปลงเลขฐานสิบเป็น hex
- ป้อนเลขฐานสิบ หรือรายการตัวเลขบรรทัดละหนึ่งค่า ใช้ได้ทั้งเลขติดลบและทศนิยม เช่น
0.75 - ผลลัพธ์ hex จะแสดงทันที พร้อมค่าฐานสองและฐานแปด ตารางวิธีทำทีละขั้นจะแสดงการหารด้วย 16 ทุกครั้งพร้อมเศษ
- หากต้องการ hex แบบ two's complement ของเลขติดลบ ให้ติ๊ก มีเครื่องหมาย (two's complement) แล้วเลือกจำนวนบิต: −1 จะเป็น
FFใน 8 บิต และFFFFFFFFใน 32 บิต
วิธีแปลงเลขฐาน 10 เป็นเลขฐาน 16 ด้วยตัวเอง
ใช้วิธีหารด้วย 16 ซ้ำ ๆ:
- นำตัวเลขหารด้วย 16 แล้วจดเศษไว้ (0–15)
- นำผลหารมาหารด้วย 16 อีกครั้ง ทำซ้ำจนผลหารเป็น 0
- เขียนเศษแต่ละตัวเป็นเลขฐานสิบหก (10 = A, 11 = B, 12 = C, 13 = D, 14 = E, 15 = F) แล้วอ่านจากตัวสุดท้ายย้อนขึ้นไปถึงตัวแรก
ตัวอย่าง: แปลง 6719 เป็นเลขฐานสิบหก
| การหาร | ผลหาร | เศษ |
|---|---|---|
| 6719 ÷ 16 | 419 | 15 = F |
| 419 ÷ 16 | 26 | 3 |
| 26 ÷ 16 | 1 | 10 = A |
| 1 ÷ 16 | 0 | 1 |
อ่านเศษจากล่างขึ้นบนจะได้ 1A3F ตรวจสอบ: 1 × 4096 + 10 × 256 + 3 × 16 + 15 = 6719
การแปลงเลขทศนิยมเป็นฐานสิบหก
สำหรับส่วนหลังจุดทศนิยม ให้คูณด้วย 16 แทนการหาร: ส่วนที่เป็นจำนวนเต็มของผลคูณแต่ละครั้งคือเลขฐานสิบหกหลักถัดไป 0.75 × 16 = 12 ดังนั้น 0.75 = 0.C ในฐานสิบหก
ทศนิยมบางค่าไม่มีวันจบในฐานสิบหก 0.1 × 16 = 1.6 ได้หลัก 1 จากนั้น 0.6 × 16 = 9.6 ได้หลัก 9 และเลข 9 จะซ้ำไปเรื่อย ๆ ไม่รู้จบ ดังนั้น 0.1 = 0.1999… เครื่องมือนี้จะปัดค่าลักษณะนี้เหลือ 12 หลัก (0.19999999999A) และกำกับด้วยเครื่องหมาย ≈
เลขฐานสิบติดลบในฐานสิบหก (two's complement)
คอมพิวเตอร์เก็บจำนวนลบ −n ขนาด w บิตเป็น 2ʷ − n วิธีหารูปแบบบิตคือนำ 2ʷ บวกกับค่าติดลบ แล้วแปลงผลลัพธ์เป็น hex: −26 ขนาด 8 บิตคือ 256 − 26 = 230 = E6
| ฐานสิบ | 8 บิต | 16 บิต | 32 บิต |
|---|---|---|---|
| −1 | FF | FFFF | FFFFFFFF |
| −2 | FE | FFFE | FFFFFFFE |
| −26 | E6 | FFE6 | FFFFFFE6 |
| −128 | 80 | FF80 | FFFFFF80 |
คำถามที่พบบ่อย
255 ในฐานสิบหกคืออะไร?
255 ในฐานสิบหกคือ FF: 255 ÷ 16 = 15 เศษ 15 จากนั้น 15 ÷ 16 = 0 เศษ 15 และเศษทั้งสองเขียนเป็น F จึงได้ FF ซึ่งเป็นค่าสูงสุดของหนึ่งไบต์
แปลงเลขฐานสิบเป็น hex ใน Excel, Python หรือ JavaScript ได้อย่างไร?
Excel และ Google Sheets: =DEC2HEX(255) ได้ FF ส่วน Python: format(255, 'X') ได้ FF และ hex(255) ได้ 0xff ส่วน JavaScript: (255).toString(16) ได้ ff ใน Excel เลขติดลบจะออกมาเป็น two's complement 10 หลัก: =DEC2HEX(-1) คือ FFFFFFFFFF
ทำไม 0.1 จึงแปลงเป็น hex ได้ไม่ลงตัว?
เพราะ 1/10 ไม่สามารถเขียนเป็นผลบวกที่จำกัดของ 1/16, 1/256 และต่อ ๆ ไปได้ หลัก hex จึงซ้ำไม่รู้จบ (0.1999…) เหมือนกับ 1/3 = 0.333… ในฐานสิบ ส่วนเศษส่วนที่เกิดจาก 1/2, 1/4, 1/8 หรือ 1/16 จะได้ค่าที่แน่นอน: 0.5 = 0.8 และ 0.75 = 0.C ในฐานสิบหก
แปลงตัวเลขขนาดใหญ่มาก ๆ ได้ไหม?
ได้ เครื่องมือนี้ใช้การคำนวณแบบความแม่นยำไม่จำกัด (arbitrary precision) ดังนั้น 18446744073709551616 (2⁶⁴) จะได้ 10000000000000000 พอดี – เกินขีดจำกัด 2⁵³ ของตัวเลขปกติใน JavaScript ไปมาก