반응형
#10진수 #2진수 #십진수 #이진수 #변환 #바꾸기 #배열
10진수를 2진수로 변환하는 프로그램입니다.
바뀐 2진수를 배열에 저장해서 출력하는 방법입니다.
(방법)
a=13; // a는 13이라 가정
(1) a를 2로 나눈 나머지를 배열에 저장 →→ 13%2 →→ 1
(2) a를 2로 나는 몫으로 변경 →→ 13/2 →→ a=6
위의 (1)과 (2)의 과정을 a가 0보다 큰면 계속 반복
a를 2로 나눈 나머지 →→ 6%2 →→ 0
a를 2로 나눈 몫으로 변경, 6/2 →→ a=3
3 % 2 →→ 1
3 / 2 →→ a=1
1 % 2 →→ 1
1 / 2 →→ a=0, 몫이 0이므로 반복을 종료함
위에서 빨갛게 표현된 숫자가 배열의 뒤에서 부터 저장되어 있으므로, 앞에서 부터 출력하면 됨
1 1 0 1
C언어 프로그램으로 표현하면 다음과 같습니다.
#define _CRT_SECURE_NO_WARNINGS // 비주얼스튜디오
#include <stdio.h>
int main()
{
int bin[32] = { 0 }; // 모두 0으로 초기화
int i, a, n = 31;
scanf("%d", &a);
while (a > 0)
{
bin[n--] = a % 2; // 2로 나눈 나머지
a /= 2; // 2로 나눈 몫
}
for (i = 0; i < 32; i++)
printf("%d", bin[i]);
printf("\n\n");
return 0;
}
(Output)
앞 부분의 0을 출력하지 않기 위해서는 코드를 다음과 같이 수정합니다.
#define _CRT_SECURE_NO_WARNINGS // 비주얼스튜디오
#include <stdio.h>
int main()
{
int bin[32] = { 0 }; // 모두 0으로 초기화
int i, a, n = 31;
int blank = 0; // -- 추가된 코드
scanf("%d", &a);
while (a > 0)
{
bin[n--] = a % 2; // 2로 나눈 나머지
a /= 2; // 2로 나눈 몫
}
for (i = 0; i < 32; i++)
{
if (blank == 0 && bin[i] != 0) // 추가된 코드 -- 최초 0이 아닌 값을 찾음
blank = 1;
if(blank==1) // -- 추가된 코드
printf("%d", bin[i]);
}
printf("\n\n");
return 0;
}
(Output)
반응형
'C_C++' 카테고리의 다른 글
(C언어) 학점 구하기 (0) | 2022.10.23 |
---|---|
(C언어) 10진수를 16진수로 변환: 배열 이용 (0) | 2022.10.23 |
10진수를 2진수로 표현하는 방법 (0) | 2022.10.22 |
(C언어) 섭씨온도 ↔ 화씨온도 변환하기 (0) | 2022.10.22 |
(C언어) 피라미드 모양의 삼각형 출력하기 (0) | 2022.10.22 |