20140307 (2의 보수법, 관계, 논리 연산자)

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) 을 실행 시

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

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

 

 

 

설정

트랙백

댓글

20140306

14일차

 

C프로그래밍을 배움.

Windows 환경과 Linux 환경을 비교해가며 배움.

 

Linux에서도 cc 사용 가능.(cc를 쓰면 자동으로 gcc를 사용하도록 되있다고 한다.)

 

- printf("\n");

ms-dos에서는 프로그램을 실행하고 명령입력창?( C:\>_ )을 띄울 때

라인피드와 캐리지 리턴을 실행하는 반면,

linux에서는 프로그램을 실행하고 명령입력창?( [id@server path] _ )을 띄울 때

캐리지 리턴만 하는 것 같다.

그래서 마지막 printf() 함수에서 \n개행문자를 안 넣어주면

결과 값이 다르게 나온다는 것을 보았다.

 

 

 

오늘 배운 것 중에 유심히 본 것이 일의 순서에 대하여 언급하신 것인데

나중에 임베디드 프로그래밍을 할 때에 저렇게 완다갔다 하는 시간을

줄여서 최적화하는데 한 몫하지 않나 싶다. 아직은 잘 모르니 앞으로 유심히 봐야 할 것.

설정

트랙백

댓글

20140305 (C언어 시작)

13일차

 

컴파일 : C언어에서 기계어로 바꾸는 과정

   ***.c       ---->    ***.i      ---->    ***.s(asm)   ----->   ***.o(obj)   ---->  ***.(exe)

(소스파일)   전처리               컴파일                    어셈블리                    링크

 

 

 

- int : 반환하는 값의 형식

- main : Entry Point 라고 진입점. 프로그램이 시작할때 처음 진입하는 함수.

- () : 조건부로 보면 되는데 인수가 들어간다. 이건 나중에 배울 예정.

- {  } : main 처럼 함수의 끝과 시작.

- return : 반환하라는 의미로 함수의 종료를 뜻한다.

- 0 : 반환하는 값을 0으로 주는데, 프로그래머의 재량으로 아무 값이나 주면 되는데

       c표준으로 0을 쓰면 아무 문제 없이 잘 끝났다는 의미로 사용.

- ; : 세미콜론으로 한 명령이 끝 날 때마다 사용. 명령어 구분.

 

'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글

20140307 (2의 보수법, 관계, 논리 연산자)  (0) 2014.03.07
20140306  (0) 2014.03.06
20140304 (cl 환견변수 등록)  (0) 2014.03.04
20140303  (0) 2014.03.03
20140228 (리눅스 디렉토리 종류, vi편집기)  (0) 2014.02.28

설정

트랙백

댓글