#include "stdio.h"
#include "math.h"
void binary(int n, int bin[]) {
int b[32] = { 0, };
int o[32] = { 0, };
int t[32] = { 0, };
int i = 31;
int ab = abs(n);
while (1) {
b[i] = ab % 2;
ab = ab / 2;
i--;
if (ab == 0)
break;
}
if (n < 0) {
for (i = 0; i < 32; i++) {
o[i] = 1 - b[i];
}
int carry = 1;
for (i = 31; i >= 0; i--) {
if (o[i] == carry)
t[i] = 0;
else
t[i] = 1;
carry = o[i] * carry;
}
printf("2진수 : ");
for (i = 0; i < 32; i++)
{
printf("%d", t[i]);
bin[i] = t[i];
if (i % 4 == 3)
printf(" ");
}
printf("\n");
}
else {
printf("2진수 : ");
for (i = 0; i < 32; i++)
{
printf("%d", b[i]);
bin[i] = b[i];
if (i % 4 == 3)
printf(" ");
}
printf("\n");
}
}
void octal(int bin[]) {
int t[11];
int j = 10;
int N = 0, n;
for (int i = 31; i >= 0; i--) {
n = (31 - i) % 3;
N += bin[i] * pow(2, n);
if (i % 3 == 2 || i == 0) {
t[j] = N;
j--;
N = 0;
}
}
printf("8진수 : ");
for (int i = 0; i <11; i++) {
printf("%d", t[i]);
if ((10 - i) % 3 == 0)
printf(" ");
}
printf("\n");
}
void hexa(int bin[]) {
char H[16] = { '0', '1', '2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
char t[8];
int j = 7;
int N = 0, n;
for (int i = 31; i >= 0; i--) {
n = (31 - i) % 4;
N += bin[i] * pow(2, n);
if (i % 4 == 0) {
t[j] = H[N];
j--;
N = 0;
}
}
printf("16진수 : ");
for (int i = 0; i < 8; i++) {
printf("%c", t[i]);
if (i == 3)
printf(" ");
}
printf("\n");
}
int main() {
int n;
printf("정수를 입력해주세요 (-2147483648 ~ 2147483647 사이 값만 입력해 주세요) : ");
scanf("%d", &n);
int bin[32] = { 0, };
binary(n, bin);
octal(bin);
hexa(bin);
}
댓글