กำหนดให้มีตัวเลขทศนิยมเป็นอินพุต ภารกิจคือการแปลงตัวเลขทศนิยมให้เป็นเลขฐานสิบหก
เลขฐานสิบหกในคอมพิวเตอร์จะแสดงด้วยฐาน 16 และเลขฐานสิบจะแสดงด้วยฐาน 10 และแสดงด้วยค่า 0 - 9 ในขณะที่เลขฐานสิบหกมีตัวเลขเริ่มต้นจาก 0 – 15 โดยที่ 10 จะแสดงเป็น A, 11 เป็น B, 12 เป็น C, 13 เป็น D, 14 เป็น E และ 15 เป็น F.
ในการแปลงเลขฐานสิบเป็นเลขฐานสิบหกให้ทำตามขั้นตอนที่กำหนด -
- ขั้นแรกให้หารตัวเลขที่กำหนดด้วยมูลค่าฐานของจำนวนการแปลงเช่น หาร 6789 ด้วย 16 เพราะเราต้องแปลง 6789 เป็นเลขฐานสิบหกที่มีฐาน 16 แล้วจึงหาผลหารและเก็บไว้ หากส่วนที่เหลืออยู่ระหว่าง 0-9 ให้เก็บไว้ตามเดิม และหากส่วนที่เหลืออยู่ระหว่าง 10-15 ให้แปลงในรูปแบบอักขระเป็น A - F
- หารผลหารที่ได้รับด้วยค่าฐานของเลขฐานสิบหกซึ่งก็คือ 16 และเก็บบิตไว้
- ทำการเลื่อนไปทางขวาไปยังบิตที่เก็บไว้
- ทำซ้ำขั้นตอนจนกว่าส่วนที่เหลือจะแบ่งแยกไม่ได้
ด้านล่างนี้คือการแสดงรูปภาพของการแปลงเลขทศนิยมให้เป็นเลขฐานสิบหก
ตัวอย่าง
Input-: 6789 Divide the 6789 with base 16 : 6789 / 16 = 5 (remainder) 424(quotient) Divide quotient with base: 424 / 16 = 8(remainder) 26(quotient) Divide quotient with base: 26 / 16 = 10(remainder) 1(quotient) Now reverse the remainder obtained for final hexadecimal value. Output-: 1A85
อัลกอริทึม
Start Step 1-> Declare function to convert decimal to hexadecimal void convert(int num) declare char arr[100] set int i = 0 Loop While(num!=0) Set int temp = 0 Set temp = num % 16 IF temp < 10 Set arr[i] = temp + 48 Increment i++ End Else Set arr[i] = temp + 55 Increment i++ End Set num = num/16 End Loop For int j=i-1 j>=0 j— Print arr[j] Step 2-> In main() Set int num = 6789 Call convert(num) Stop
ตัวอย่าง
#include<iostream> using namespace std; //convert decimal to hexadecimal void convert(int num) { char arr[100]; int i = 0; while(num!=0) { int temp = 0; temp = num % 16; if(temp < 10) { arr[i] = temp + 48; i++; } else { arr[i] = temp + 55; i++; } num = num/16; } for(int j=i-1; j>=0; j--) cout << arr[j]; } int main() { int num = 6789; cout<<num<< " converted to hexadeciaml: "; convert(num); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น จะเกิดผลลัพธ์ดังต่อไปนี้
6789 converted to hexadeciaml: 1A85