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à,
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ẽ -
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