1619, 1/81 회원가입  로그인  
   우느님
   [자작] C언어 War Game Release 04.01 < Solution > 16진수

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1985 [복사]


#include <stdio.h>

int main()
{
        int sum = 0;        // 총 합
        char ch;                // 입력받은 문자
        char hex[] = "0123456789ABCDEF";
        int mask = 0xf;        // ( 0000 0000 0000 0000 0000 0000 0000 1111 = 0xf )
        int masked_num;        // & 연산 후 결과 값
        int cnt = 0;                // 카운터

        do{
                ch = getchar();                        // 문자 입력받고
                if( ch >= '0' && ch <= '9')        // 숫자이면
                {
                        sum += ch - '0';        // 합을 구한다
                }
        }while( ch != '\n');        // 널문자이면 루프 끗

        do{
                cnt++;        // 카운팅
                sum = ( sum << 4 ) | ( sum >> 28 );        
                                // 32비트의 앞쪽 4비트를 로테이트 시켜서 뒤쪽 4비트로 옮긴다.

                masked_num = sum & mask;        
                                // 앞쪽에서부터 4비트씩 끌어와서 비트를 확인 한 후,

                putchar(hex[masked_num]);        
                                // 해당하는 숫자를 출력한다.
        }while( cnt < 8 );

        putchar('\n');
}

이것은 합을 16진수로 출력하는 소스 입니다.

  Hit : 9062     Date : 2012/04/11 04:09