티스토리 뷰


[프로그래밍 문제] 비트 이동 프로그램



키보드로 문자 1개를 입력받아서, 이 문자를 오른쪽으로 1비트씩 이동시키면서 최하위 비트를 제거한다. 이때 제거되는 최하위 비트 값을 최상위 비트에 채워 넣는 프로그램을 작성하시오. 단, 결과는 2진수로 출력하시오. (비트 로테이션 프로그램)






#include 

int main()
{
    unsigned char ch;
    int i, j;
    int underflow;

    printf("Input word:");
    scanf("%c", &ch);

    for ( j = 0; j < 8; ++j )
    {
        for ( i =7; i >= 0; i-- )
            printf("%2d", (ch >> i) & 1 );
        printf("\n");

        // 오른쪽으로 잘린 부분이 1 인지 확인
        if ( ch & 1 ) underflow = 1;
        else underflow = 0;

        ch >>= 1;

		// 오른쪽으로 shift 했을 경우 잘린 부분이 1 인지 0 인지 확인해서 최상위비트(MSB)로 옮겨 주는 부분

        // MSB 세트
        if ( underflow ) ch |= 0x80;
    }

    return 0;
}
댓글