본문 바로가기

카테고리 없음

[C++] 10진수를 2진수로 출력하기

void tobi(int su)
{
	int i, bit = 0x8000;

	for(i = 0; i < 16; i++)
	{
		if(((i % 4) == 0) && (i != 0))cout << " ";
		if((su & bit))cout << "1";
		else cout << "0";
		su = su << 1;
	}
	cout << endl;
}

void main()
{
	int su;

	cout << "숫자를 입력해 주세요 : ";
	cin >> su;

	tobi(su);
}

프로그램 실행화면


정수를 입력받아서 2진수로 출력해 주는 프로그램이다. 원래 int는 4바이트다. 근대 프로그램은 2바이트로 생각하고 프로그래밍을 했다.


이 프로그램을 보고 이해를 했다면 충분히 4바이트 정수를 2진수로 바꾸는 프로그램으로 수정할 수 있을 것이다. tobi()함수에서 for문의 조건식과 bit의 초기값만 변경해주면 된다.


원래 4바이트이기 때문에 음수를 입력했을 때 정확하게 나오지 않는 범위가 있을 것이다. 일딴 위의 프로그램은 양수전용이라 해두면 좋을 것 같다.


for문에서 어떤식으로 되어있냐면 su의 가장 최상위 bit를 검사해서 1이면 1을 출력하고 0이면 0을 출력한다. 그리고 << 1 즉 왼쪽으로 1칸식 shift 시킨다. 그리고 또 최상위 bit를 검사해서 출력해준다. 이를 16번 반복하면 전부 출력된다.