여러코드를 코드를 보다보면 이렇게도 응용을 할수 있구나라는 생각이든다.
과연 그 코드를 모르는 상태에서 이러한 코드를 생성할수 있을까...
/*10진수를 16진수로 출력하는 프로그램*/
#include <stdio.h>
void main()
{
int input;
int low, hi;
while(1)
{
printf("0~255사이의 수를 입력하시오: ");
scanf("%d", &input);
hi = input >> 4;
low = input & 0xf;
printf("입력한 수의 16진 표기 = %c%c\n", hi+'0'+(hi > 9)*7, low+'0'+(low > 9)*7);
}
}
10진에서 16진수를 구하기 위해 상위비트는 비트연산자를 통해 구하고
하위비트는 논리연산자로 마스크(?)를 만들어서 변수에 저장 시켰다.
그리고 나서 이를 16진수로 바꾸기 위해서 0의 아스키코드값 48과 더하면 9를 초과하는지의
여부를 알 수 있다. (hi >9)가 참이면 1 아니면 0을 리턴하는 것을 응용하여 9를 초과 했다면
아스키코드값이 대문자 A가 부터 표현하기 위해 7을 더해준다. (브라보!)