16진수 숫자가 문자열로 주어집니다. 작업은 8진수로 변환하는 것입니다. 16진수를 8진수로 변환하려면 다음을 수행해야 합니다. -
- 16진수에 해당하는 이진수를 찾습니다.
- 2진수를 8진수로 변환합니다.
16진수란 무엇입니까
16진수는 16의 밑수가 되는 수로 0-9까지 다양하며 10부터 숫자는 10을 나타내는 A, 11을 나타내는 B, 12를 나타내는 C, 13을 나타내는 D, 14를 나타내는 E, F로 표시됩니다. 15.
16진수를 2진수로 변환하려면 모든 숫자를 4비트에 해당하는 2진수로 변환한 다음 이 숫자를 결합하여 해당하는 하나의 2진수를 형성합니다.
8진수란 무엇입니까
컴퓨터에서 8진수는 8진수로 표현되며, 0-7 형식의 8진수는 3개의 이진수 또는 3개의 이진수를 그룹화하여 만듭니다.
우리가 해야 할 일
16진수 1A6이 있으므로 1, 10 및 6을 의미하므로 16진수에서 8진수로 먼저 16진수에 해당하는 2진수를 찾아야 합니다. 즉,
따라서 1A6의 이진수 =0001 1010 0110
이제 16진수의 2진수를 찾은 후 다음 작업은 2진수의 8진수를 찾는 것입니다.
그 전에 이진수를 3으로 그룹화합니다. 3으로 그룹화하면 000 110 100 110이 됩니다.
8진수 표현은 다음과 같습니다. -
따라서 16진수 1A6의 8진수 표현은 -646입니다.
예시
Input: 1A6 Output: Octal Value = 646 Explanation: Input: 1AA Output: 652
주어진 문제를 해결하기 위해 사용할 접근 방식 -
- 입력을 받아 문자열로 저장합니다.
- 아래 방법에 따라 16진수 또는 표현식을 2진수로 변환하십시오. -
- 각각의 2진법 표현을 추가하여 16진법의 모든 16가지 경우를 확인하십시오.
- 결과를 반환합니다.
- 2진수를 8진수로 변환하려면 다음 단계를 따르십시오. -
- 2진수와 8진수의 가능한 모든 경우를 비교하여 세 자리를 차지하세요.
- 8진수 =(val * place) + 8진수 값을 설정합니다.
- 2진수를 1000으로 나누기
- 장소 *=10
- 결과를 반환합니다.
알고리즘
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; }
예시
#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; }
출력
Octal Value = 2715