Algorithm with C/ETC

비트 연산자 문제

DesignatedRoom 2020. 10. 17. 08:52

문제

비트 이동 연산을 이용하여 문자 4개를 받아서 하나의 unsigned int형의 변수 안에 저장하는 프로그램을 작성하라.

첫 번째 문자는 unsigned int형 변수의 비트 0 부터 7 까지에 저장이 되고, 

두 번째 문자는 비트 8부터 15 까지.

세 번째 문자는 비트 16에서 비트 23까지

네 번째 문자는 비트 24 부터 비트 31까지에 저장된다.

결과로 생성되는 정수값은 16진수로 출력하도록 한다. 비트 이동 연산과 비트 OR연산을 사용하라.

 

입력 

첫 번째 문자:a

두 번째 문자:b

세 번째 무자:c

네 번째 문자:d

 

출력

결과값: 64636261

 

구현

프로그램 실행결과

소스 코드

더보기
#include <stdio.h>

#define		MAX				4	//	문자 배열의 길이
#define		BITS_PER_BYTE	8	//	1바이트 당 비트의 수(8비트)

int main(void)
{
	int i;
	unsigned int result = 0;
	unsigned int temp;

	char charArr[MAX] = {'a','b','c','d'};

	for (i = 0; i < MAX; i++)
	{
		temp = charArr[i];
		temp = (temp << i * BITS_PER_BYTE);
		result |= temp;		//	OR 연산
	}

	printf("%x\n", result);

	return 0;
}