Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมสำหรับการแปลงทศนิยมเป็นเลขฐานสิบหกใน C++


กำหนดให้มีตัวเลขทศนิยมเป็นอินพุต ภารกิจคือการแปลงตัวเลขทศนิยมให้เป็นเลขฐานสิบหก

เลขฐานสิบหกในคอมพิวเตอร์จะแสดงด้วยฐาน 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 และเก็บบิตไว้
  • ทำการเลื่อนไปทางขวาไปยังบิตที่เก็บไว้
  • ทำซ้ำขั้นตอนจนกว่าส่วนที่เหลือจะแบ่งแยกไม่ได้

ด้านล่างนี้คือการแสดงรูปภาพของการแปลงเลขทศนิยมให้เป็นเลขฐานสิบหก

โปรแกรมสำหรับการแปลงทศนิยมเป็นเลขฐานสิบหกใน C++

ตัวอย่าง

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