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