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;
}