여러코드를 코드를 보다보면 이렇게도 응용을 할수 있구나라는 생각이든다.

과연 그 코드를 모르는 상태에서 이러한 코드를 생성할수 있을까...

/*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을 더해준다. (브라보!)

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

댓글을 달아 주세요

  1. 방돌 2011/07/05 15:00  address  modify / delete  reply

    hex 값 표현 하는 부분을 정말 많이 고민했었는데 이렇게 쉽게 풀리네요!
    좋은 자료 감사합니다~

  2. allwin79 2020/11/24 20:43  address  modify / delete  reply

    24 июня, менее чем через год после начала работы, на этот раз из-за взрыва на заводе Kangyang Iron Works.

    В результате несчастного случая погибли три сотрудника Поско, 40 из которых работали на заводе, а также сотрудники B(32) и C (53).

    Предполагается, что авария вспыхнула во время работы над закрытым клапаном трубопровода для снабжения кислорода.

    Пожар в результате взрыва был не большим, но человеческие потери были огромны, три человека погибли.

    Я закончил собственную эволюцию примерно за 20 минут, но двое рабочих были найдены в состоянии сердечного приступа и еще один сотрудник был убит после двухчасовой обыска.

    Кваньянская железная дорога объяснила, что в то время, когда я работал в первом гараже, произошла предполагаемая авария в пожаре, так как кислород сильно текло из-за кислородных труб.

    Менее чем за год до этого последовали взрывы на заводе Кваньян, и граждане обеспокоены.


    https://allwin79.xyz

[로그인][오픈아이디란?]