วิธีใช้เครื่องคิดเลขฐาน 16
- ป้อนเลขฐานสิบหกสองค่า เช่น
8ABและB78ใส่เครื่องหมายลบและ prefix อย่าง0xได้ - เลือกการดำเนินการ ผลลัพธ์จะอัปเดตทันทีทั้งในฐานสิบหก ฐานสิบ และฐานสอง ส่วนการหารจะแสดงเศษด้วย
- สำหรับผลลัพธ์ที่ติดลบและ NOT ให้เลือกจำนวนบิต (8, 16, 32 หรือ 64 บิต) เพื่อดูค่าแบบ two's complement
วิธีบวกเลขฐาน 16
บวกทีละหลักจากขวาไปซ้ายเหมือนเลขฐานสิบทุกประการ ต่างกันเพียงอย่างเดียว: ถ้าผลบวกของหลักใดได้ 16 ขึ้นไป ให้เขียนผลบวกลบด้วย 16 แล้วทด 1 ไปยังหลักถัดไป ตัวอย่าง: 8AB + B78
| หลัก | ตัวเลข | ผลบวก | เขียน | ทด |
|---|---|---|---|---|
| 16⁰ | B + 8 | 11 + 8 = 19 | 3 | 1 |
| 16¹ | A + 7 + 1 | 10 + 7 + 1 = 18 | 2 | 1 |
| 16² | 8 + B + 1 | 8 + 11 + 1 = 20 | 4 | 1 |
| 16³ | ตัวทด | 1 | 1 | – |
อ่านตัวเลขที่เขียนจากแถวล่างขึ้นบน (หลักสูงสุดก่อน) จะได้ 1423 ตรวจสอบด้วยฐานสิบ: 2219 + 2936 = 5155 = 1423 ในฐานสิบหก
การลบเลขฐาน 16 ผลลัพธ์ติดลบ และ two's complement
การลบใช้วิธียืม: ถ้าหลักของตัวตั้งน้อยกว่า ให้ยืม 16 จากหลักถัดไป B78 − 8AB: 8 − B ต้องยืม จึงได้ 8 + 16 − 11 = 13 = D จากนั้น 7 − 1 − A ต้องยืมอีก ได้ 6 + 16 − 10 = 12 = C สุดท้าย B − 1 − 8 = 2 ผลลัพธ์จึงเป็น 2CD
ถ้าตัวที่สองมากกว่า ผลลัพธ์จะติดลบ เครื่องคิดเลขจะแสดงผลพร้อมเครื่องหมายลบ (5 − 8 = −3) และแสดงเป็นรูปแบบบิตที่คอมพิวเตอร์เก็บจริงด้วย: ใน two's complement 8 บิต −3 คือ 2⁸ − 3 = 253 = FD และใน 16 บิตคือ FFFD หากคำนวณด้วยมือ ให้ทำตัวเลขเป็นค่าลบโดยกลับบิตทั้งหมดแล้วบวก 1: 03 = 0000 0011 → 1111 1100 → 1111 1101 = FD
การดำเนินการระดับบิต: AND, OR, XOR, NOT และการเลื่อนบิต
การดำเนินการระดับบิต (bitwise) จะเปรียบเทียบตัวเลขทีละบิต โปรแกรมเมอร์จึงนิยมใช้กับ flag, mask และสิทธิ์การเข้าถึง ตัวอย่างกับ 3C = 0011 1100 และ 0F = 0000 1111:
| การดำเนินการ | กฎ | ผลลัพธ์ |
|---|---|---|
3C AND 0F | เป็น 1 เฉพาะเมื่อทั้งสองบิตเป็น 1 | 0C |
3C OR 0F | เป็น 1 เมื่อมีอย่างน้อยหนึ่งบิตเป็น 1 | 3F |
3C XOR 0F | เป็น 1 เมื่อบิตต่างกัน | 33 |
NOT 3C (8 บิต) | กลับค่าทุกบิต | C3 |
3C << 1 | เลื่อนซ้าย = คูณด้วย 2 | 78 |
3C >> 2 | เลื่อนขวา = หารด้วย 4 | 0F |
คำถามที่พบบ่อย
คูณเลขฐาน 16 ทำอย่างไร?
ทำเหมือนการคูณเลขฐานสิบ แต่ผลคูณย่อยทุกตัวต้องเขียนเป็นฐาน 16 วิธีที่มักง่ายกว่าคือแปลงเป็นฐานสิบ คูณ แล้วแปลงกลับ: 1A × 10 = 26 × 16 = 416 = 1A0 การคูณด้วย 10 ในฐานสิบหก (16) ก็แค่เติม 0 ต่อท้าย เหมือนการคูณด้วย 10 ในฐานสิบ
หารเลขฐาน 16 แล้วจะได้ผลอย่างไร?
เครื่องคิดเลขจะหารแบบจำนวนเต็มและแสดงทั้งผลหารและเศษ: 1423 ÷ 10 = 142 เศษ 3 ส่วนการหารด้วยศูนย์จะแจ้งเป็นข้อผิดพลาด
ทำไม NOT จึงให้ผลต่างกันเมื่อจำนวนบิตต่างกัน?
NOT กลับค่าทุกบิตของค่าที่มีขนาดคงที่ ผลลัพธ์จึงขึ้นอยู่กับจำนวนบิต: NOT 3C คือ C3 ใน 8 บิต แต่เป็น FFC3 ใน 16 บิต ตัวเลือกอัตโนมัติจะเลือกขนาดมาตรฐานที่เล็กที่สุด (8, 16, 32 หรือ 64 บิต) ที่เก็บตัวเลขนั้นได้
เครื่องคิดเลขฐาน 16 คำนวณเลขขนาดใหญ่ได้ไหม?
ได้ ทุกการดำเนินการใช้จำนวนเต็มแบบความแม่นยำไม่จำกัด ค่า 64 บิต 128 บิต หรือยาวกว่านั้นจึงคำนวณได้ถูกต้องแม่นยำ โดยไม่มีปัญหา overflow หรือการปัดเศษเหมือนเครื่องคิดเลขทั่วไป