ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20140307 (2의 보수법, 관계, 논리 연산자)
    부산IT학원/스마트컨트롤러 2014. 3. 7. 11:17

    15일차

     

    ------------------------------------------

    Magnitude 방식과 2'Complete(2의 보수법)

    ------------------------------------------

    unsigned 붙은것과 안 붙은것

    2의 보수법을 취하는 것을 보는 소스다.

    #include <stdio.h>

    int main()
    {
      unsigned char cNum1;
      char cNum2;

      cNum1 = 127;
      cNum2 = 127;
      printf("%d    %d\n", cNum1, cNum2);

      cNum1 = 128;
      cNum2 = 128;
      printf("%d    %d\n", cNum1, cNum2);

      cNum1 = 129;
      cNum2 = 129;
      printf("%d    %d\n", cNum1, cNum2);

      cNum1 = 255;
      cNum2 = 255;
      printf("%d    %d\n", cNum1, cNum2);

      return 0;
    }

    출력 화면

     

    ------------------

    관계, 논리 연산자

    ------------------

    #include <stdio.h>

    int main()
    {
      int iNum1;
      int iNum2;
      int iNum3;
      int iNum4;
      int iNum5;
      int iNum6;
      int iNum7;
      int iNum8;
      int iNum9;
      int iNum10;


      iNum1 = 6 > 5;
      iNum2 = 6 > 7;
      iNum3 = 7 == 6;
      iNum4 = !3;
      iNum5 = 7 != 6;
      iNum6 = 7 <= 7;
      iNum7 = 7 && 6;
      iNum8 = 8 || 0;
      iNum9 = 100;
      iNum10 = 7 || (++iNum9);

      printf("iNum1 = %d\n", iNum1);
      printf("iNum2 = %d\n", iNum2);
      printf("iNum3 = %d\n", iNum3);
      printf("iNum4 = %d\n", iNum4);
      printf("iNum5 = %d\n", iNum5);
      printf("iNum6 = %d\n", iNum6);
      printf("iNum7 = %d\n", iNum7);
      printf("iNum8 = %d\n", iNum8);
      printf("iNum9 = %d\n", iNum9);
      printf("iNum10 = %d\n", iNum10);

      return 0;
    }

    출력화면

    여기서 재미있는게 있는데

    바로 iNum9의 값이다.

    원래 예상대로라면 101이 나와야 하지만 100이 나왔다.

    왜냐하면 cpu에서도 일을 적게하려 하기에 || (or) 을 실행 시

    앞의 조건이 참이면 뒷 조건은 실행하지 않는다.

    반대로 앞 조건이 거짓이면 뒷 조건을 실행한다.

     

     

     

Designed by Tistory.