C_C++

(C언어) 10진수를 2진수로 변환, 배열 이용

enjoy-country-life 2022. 10. 5. 08:03
반응형

10진수를 2진수로 변환하는 다양한 방법들이 있습니다.

여기서는 배열을 이용해서 변환하는 방법을 사용했습니다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int dec, binary, cnt;
	int b[33] = { 0 };

	printf("10진수를 2진수로 변환\n");
	while(1)
	{
		printf("\n정수입력(0,음수: 종료) : ");
		scanf("%d", &dec);
		// scanf_s("%d", &dec);  // Visual Studio
		if (dec <= 0) break;

		printf("%d:\t", dec);

		int i = 0;
		while (dec > 0)
		{
			binary = dec % 2;
			b[i] = binary;
			dec = dec / 2;
			i++;
		}
		cnt = i - 1;

		for (i = cnt; i >= 0; i--)
			printf("%d", b[i]);

		printf("\n");
	} 
	return 0;
}

 

 

위 코드는 배열의 앞에서 부터 저장하고, 출력을 반대로 하는 코드입니다.

이 코드를 배열의 뒤에서 부터 저장하고, 앞에서 부터 출력하도록 변경했습니다. 출력은 32비트 전체를 출력하기 때문에 앞 부분의 0이 모두 출력됩니다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int dec, binary, cnt;
	int b[33] = { 0 };

	printf("10진수를 2진수로 변환\n");
	while(1)
	{
		printf("\n정수입력(0,음수: 종료) : ");
		scanf("%d", &dec);
		// scanf_s("%d", &dec);  // Visual Studio
		if (dec <= 0) break;

		printf("%d:\t", dec);

		//int i = 0;
		int i = 32;

		while (dec > 0)
		{
			binary = dec % 2;
			b[i] = binary;
			dec = dec / 2;
			i--;
			//i++;
		}
		cnt = i - 1;

		//for (i = cnt; i >= 0; i--)
		for (i = 0; i<33; i++)
			printf("%d", b[i]);

		printf("\n");
	} 
	return 0;
}

 

$ _

반응형