Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình chuyển đổi hệ thập lục phân sang hệ bát phân trong chương trình C

Chúng tôi được cung cấp một số Hệ thập lục phân dưới dạng chuỗi; nhiệm vụ là chuyển đổi nó thành hệ bát phân. Để chuyển đổi một số thập lục phân sang bát phân, chúng ta phải -

  • Tìm số nhị phân tương đương với số thập lục phân.
  • Chuyển đổi số nhị phân thành số bát phân.

Số thập lục phân là gì

Số thập lục phân là các số có cơ số là 16, các số thay đổi từ 0-9 và từ 10 trở đi, các số được biểu thị là A đại diện cho 10, B cho 11, C cho 12, D cho 13, E cho 14 và F cho 15.

Để chuyển đổi số thập lục phân thành số nhị phân, mỗi số được chuyển đổi thành số tương đương nhị phân của nó là 4 bit và sau đó các số này được kết hợp để tạo thành một số nhị phân tương ứng.

Số bát phân là gì

Số bát phân trong máy tính được biểu diễn với cơ số 8, có dạng 0-7 số bát phân được tạo bằng cách nhóm ba số nhị phân hoặc ba chữ số nhị phân.

Chúng ta phải làm gì

Giống như chúng ta có một số thập lục phân 1A6, vì vậy nó có nghĩa là 1, 10 và 6 bây giờ đối với hệ thập lục phân thành bát phân, trước tiên chúng ta phải tìm số tương đương nhị phân của số thập lục phân, tức là,

Chương trình chuyển đổi hệ thập lục phân sang hệ bát phân trong chương trình C

Vì vậy, nhị phân của 1A6 =0001 1010 0110

Bây giờ sau khi tìm được nhị phân của số thập lục phân, công việc tiếp theo là tìm bát phân của số nhị phân.

Trước đó, chúng ta sẽ nhóm số nhị phân thành ba. Sau khi nhóm 3 chúng ta sẽ nhận được 000 110 100 110

Biểu diễn bát phân của ai sẽ -

Chương trình chuyển đổi hệ thập lục phân sang hệ bát phân trong chương trình C

Vì vậy, biểu diễn bát phân của số thập lục phân 1A6 là - 646

Ví dụ

Input: 1A6
Output: Octal Value = 646
Explanation:

Input: 1AA
Output: 652

Phương pháp tiếp cận mà chúng tôi sẽ sử dụng để giải quyết vấn đề đã cho -

  • Nhận dữ liệu đầu vào và lưu trữ dưới dạng chuỗi.
  • Chuyển đổi biểu thức hoặc số thập lục phân sang hệ nhị phân bằng cách làm theo cách tiếp cận bên dưới -
    • Kiểm tra tất cả 16 trường hợp của hệ thập lục phân bằng cách thêm biểu diễn nhị phân tương ứng của chúng.
    • Trả lại kết quả.
  • Chuyển đổi số nhị phân thành số bát phân theo các bước sau -
    • Lấy 3 vị trí bằng cách so sánh tất cả các trường hợp có thể có của số nhị phân với số bát phân.
    • Đặt giá trị của bát phân =(val * place) + bát phân;
    • Chia số nhị phân cho 1000
    • địa điểm * =10
  • Trả lại kết quả.

Thuật toán

Start
Step 1-> In function long long int hexa_binary(char hex[])
   Declare variables binary, place
   Declare and initialize i = 0, rem, val
   Initialize t n = strlen(hex)
   Initialize binary = 0ll and place = 0ll
   Loop For i = 0 and hex[i] != '\0' and i++ {
      binary = binary * place;
      switch (hex[i]) {
         case '0':
            binary += 0
         case '1':
            binary += 1
         case '2':
            binary += 10
         case '3':
            binary += 11
         case '4':
            binary += 100
         case '5':
            binary += 101
         case '6':
            binary += 110
         case '7':
            binary += 111
         case '8':
            binary += 1000
         case '9':
            binary += 1001
         case 'a':
         case 'A':
            binary += 1010
         case 'b':
         case 'B':
            binary += 1011
         case 'c':
         case 'C':
            binary += 1100
         case 'd':
         case 'D':
            binary += 1101;
            break;
         case 'e':
         case 'E':
            binary += 1110;
            break;
         case 'f':
         case 'F':
            binary += 1111;
            break;
         default:
            printf("Invalid hexadecimal input.");
      }
      place = 10000;
   }
   return binary;
}
long long int binary_oct(long long binary) {
   long long int octal, place;
   int i = 0, rem, val;
   octal = 0ll;
   place = 0ll;
   place = 1;
   while (binary > 0) {
      rem = binary % 1000;
      switch (rem) {
      case 0:
         val = 0;
         break;
      case 1:
         val = 1;
         break;
      case 10:
         val = 2;
         break;
      case 11:
         val = 3;
         break;
      case 100:
         val = 4;
         break;
      case 101:
         val = 5;
         break;
      case 110:
         val = 6;
         break;
      case 111:
         val = 7;
         break;
      }
      octal = (val * place) + octal;
      binary /= 1000;
      place *= 10;
   }
   return octal;
}
long long int hexa_oct(char hex[]) {
   long long int octal, binary;
   // convert HexaDecimal to Binary
   binary = hexa_binary(hex);
   // convert Binary to Octal
   octal = binary_oct(binary);
   return octal;
}
int main() {
   char hex[20] = "1a99";
   printf("Octal Value = %lld", hexa_oct(hex));
   return 0;
}

Ví dụ

#include <stdio.h>
#include <string.h>
#include <math.h>
//To convert hex to binary first
long long int hexa_binary(char hex[]) {
   long long int binary, place;
   int i = 0, rem, val;
   int n = strlen(hex);
   binary = 0ll;
   place = 0ll;
   for (i = 0; hex[i] != '\0'; i++) {
      binary = binary * place;
      switch (hex[i]) {
      case '0':
         binary += 0;
         break;
      case '1':
         binary += 1;
         break;
      case '2':
         binary += 10;
         break;
      case '3':
         binary += 11;
         break;
      case '4':
         binary += 100;
         break;
      case '5':
         binary += 101;
         break;
      case '6':
         binary += 110;
         break;
      case '7':
         binary += 111;
         break;
      case '8':
         binary += 1000;
         break;
      case '9':
         binary += 1001;
         break;
      case 'a':
      case 'A':
         binary += 1010;
         break;
      case 'b':
      case 'B':
         binary += 1011;
         break;
      case 'c':
      case 'C':
         binary += 1100;
         break;
      case 'd':
      case 'D':
         binary += 1101;
         break;
      case 'e':
      case 'E':
         binary += 1110;
         break;
      case 'f':
      case 'F':
         binary += 1111;
         break;
      default:
         printf("Invalid hexadecimal input.");
      }
      place = 10000;
   }
   return binary;
}
//To convert binary to octal
long long int binary_oct(long long binary) {
   long long int octal, place;
   int i = 0, rem, val;
   octal = 0ll;
   place = 0ll;
   place = 1;
   // giving all binary numbers for octal conversion
   while (binary > 0) {
      rem = binary % 1000;
      switch (rem) {
      case 0:
         val = 0;
         break;
      case 1:
         val = 1;
         break;
      case 10:
         val = 2;
         break;
      case 11:
         val = 3;
         break;
      case 100:
         val = 4;
         break;
      case 101:
         val = 5;
         break;
      case 110:
         val = 6;
         break;
      case 111:
         val = 7;
         break;
      }
      octal = (val * place) + octal;
      binary /= 1000;
      place *= 10;
   }
   return octal;
}
// to convert the hexadecimal number to octal
long long int hexa_oct(char hex[]) {
   long long int octal, binary;
   // convert HexaDecimal to Binary
   binary = hexa_binary(hex);
   // convert Binary to Octal
   octal = binary_oct(binary);
   return octal;
}
//main function
int main() {
   char hex[20] = "5CD";
   printf("Octal Value = %lld", hexa_oct(hex));
   return 0;
}

Đầu ra

Octal Value = 2715