반응형
문제)
10진수의 데이터를 입력받아서 2진수, 8진수, 16진수로 각각 출력하시오.
단, 배열이나 임시 저장 공간없이 바로 출력합니다.
입력>
정수 하나를 입력하세요. >> 256
출력>
2 진수: 00000000000000000000000100000000
8 진수: 400
16진수: 100
답은 아래에... ↓
스스로 풀어보시고... ↓
아래 답과 비교해보세요. ↓
#include <stdio.h>
void print_bin(int value)
{
int i = 0;
for(i = 31; i >= 0; i--) {
printf("%d", (value >> i) & 1);
}
}
void print_oct(int value)
{
int count = 0;
int i;
for(i = 0; i < 32; i += 3) {
if((value >> i) > 0 ) {
count = i / 3;
}
}
for(i = count * 3; i >= 0; i -= 3) {
printf("%d", (value >> i) & 7);
}
}
void print_hex(int value)
{
int count = 0;
int i;
int hex;
for(i = 0; i < 32; i += 4) {
if((value >> i) > 0 ) {
count = i / 4;
}
}
for(i = count * 4; i >= 0; i -= 4) {
hex = ((value >> i) & 15);
if(hex < 10) {
printf("%d", hex);
} else {
printf("%c", hex + 55);
}
}
}
int main(int argc, char **argv)
{
int i;
while(1) {
printf("정수 하나를 입력하세요. >> ");
scanf("%d", &i);
if(i < 0) {
continue;
} else if(i == 0) {
printf("종료합니다.\n");
break;
}
printf("2 진수: ");
print_bin(i);
printf("\n");
printf("8 진수: ");
print_oct(i);
printf("\n");
printf("16진수: ");
print_hex(i);
printf("\n");
}
return 0;
}
반응형
'C언어 문제 > 문법 이해' 카테고리의 다른 글
[반복문] 전체 구구단을 3단씩 출력하기 (0) | 2019.11.19 |
---|---|
[bit연산] 비트 연산 전후 데이터를 2진수로 출력하기 (0) | 2019.11.06 |
[main함수] 명령어로 두 데이터 입력후 계산하기 (0) | 2019.11.04 |
[반복문] 입력문자 횟수만큼 출력 (for문 예제) (0) | 2019.11.04 |
[반복문] 전체 구구단을 1단씩 출력하는 프로그램 (0) | 2019.11.03 |