최원빈 (bindon@korea.ac.kr)
고려대학교
2017. 04. 10.
C 프로그래밍 이론 및 실습
2
 반지름이 3인 원의 넓이, 둘레와 높이가 5인 부피
구하기
 모듈화(함수 사용)
 알맞은 define 또는
const 사용
 알맞은 자료형 사용
지난 과제 풀이
3
 일반적인 자료형 범위
기본 자료형의 종류
4
 워룸 기준으로의 길이 확인
기본 자료형의 종류
64비트(x64)32비트(x86)
5
 실수형 변수의 처리 방법
 float
 부호(1비트), 지수(8비트), 가수(23비트)
 double
 부호(1비트), 지수(11비트), 가수(52비트)
기본 자료형의 종류
1 8 23
1 11 52
6
 실수형 변수의 값 확인
기본 자료형의 종류
7
 실수형 변수의 값 확인
기본 자료형의 종류
8
 실수형 변수의 값 확인(IEEE 754)
 float : 000046c1 (little endian)
c1460000 (big endian)
 부호(1비트), 지수(8비트), 가수(23비트)
 -12.375 = -1100.011(2)
= -1.100011 × 23
(2)
 부호 : 0(양수), 1(음수)
 지수 : 10000010
 가수 : 10001100000...
기본 자료형의 종류
9
 정수형 부호 표현
기본 자료형의 종류
10
 정수형 부호 표현
 plus
 12345(10)
 39300000(2-little endian)
 00003039(2-big endian)
기본 자료형의 종류
11
 정수형 부호 표현
 minus
 -12345(10)
 c7cfffff(2-little endian)
 ffffcfc7(2-big endian)
기본 자료형의 종류
12
 연산자 사용 방법
축약 연산자
13
 연산자 사용 방법과 결과
1. number == 10
2. number = number + (1 * 2) == 12
3. number = number * (9 + 1) == 120
축약 연산자
14
 연산자 사용 방법
비트 연산자
15
 연산자 사용 방법과 결과
비트 연산자
16
 연산자 사용 방법과 결과
 left & right
& 0011 0000 0011 1001 // left
& 1101 0100 0011 0001 // right
-----------------------------------------------
& 0001 0000 0011 0001 // result(4145)
비트 연산자
17
 연산자 사용 방법과 결과
 left | right
| 0011 0000 0011 1001 // left
| 1101 0100 0011 0001 // right
-----------------------------------------------
| 1111 0100 0011 1001 // result(62521)
비트 연산자
18
 연산자 사용 방법과 결과
 ~left
~ 0011 0000 0011 1001 // left
-----------------------------------------------
~ 1100 1111 1100 0110 // result(-12346)
비트 연산자
19
 연산자 사용 방법과 결과
 left << 2 (* 2n의 효과)
0011 0000 0011 1001 // left
0110 0000 0111 0010 // left << 1
1100 0000 1110 0100 // left << 2 (49380)
비트 연산자
20
 연산자 사용 방법과 결과
 left >> 2 (* 2-n의 효과)
0011 0000 0011 1001 // left
0001 1000 0001 1100 // left >> 1
0000 1100 0000 1110 // left >> 2 (3086)
비트 연산자
21
 연산자 사용 방법과 결과
 result = (condition) ? (true val) : (false val)
3항 연산자
22
 연산자 사용 방법과 if문과의 비교
3항 연산자
23
 연산자 사용 방법과 if문과의 비교
3항 연산자
24
 연산자 사용 방법과 결과
전ㆍ후위 증감 연산자
25
 연산자 동작 개념
 연산 없이 출력하는 경우
1. number 변수의 값을 EAX에 저장
2. printf에 매개변수를 위해 스택에 저장(param 2)
3. printf에 매개변수를 위해 스택에 저장(param 1)
4. printf() 호출
5. ESP(Extended Stack Pointer) 이동
전ㆍ후위 증감 연산자
26
 연산자 동작 개념
 후위 연산의 경우
1. 현재 number의 값을 [ebp-0D0h]에 저장
2. number의 값을 ecx에 저장하고 1을 더한 후
number에 다시 저장
전ㆍ후위 증감 연산자
27
 연산자 동작 개념
 전위 연산의 경우
1. 현재 number의 값을 [ebp-0D0h]에 저장
1. number의 값을 eax에 저장하고 1을 더한 후
number에 다시 저장
전ㆍ후위 증감 연산자
28
 연산자 동작 개념
 연산자의 차이
전ㆍ후위 증감 연산자
29
Thank you

[170410 3주차]C언어 A반

  • 1.
    최원빈 (bindon@korea.ac.kr) 고려대학교 2017. 04.10. C 프로그래밍 이론 및 실습
  • 2.
    2  반지름이 3인원의 넓이, 둘레와 높이가 5인 부피 구하기  모듈화(함수 사용)  알맞은 define 또는 const 사용  알맞은 자료형 사용 지난 과제 풀이
  • 3.
    3  일반적인 자료형범위 기본 자료형의 종류
  • 4.
    4  워룸 기준으로의길이 확인 기본 자료형의 종류 64비트(x64)32비트(x86)
  • 5.
    5  실수형 변수의처리 방법  float  부호(1비트), 지수(8비트), 가수(23비트)  double  부호(1비트), 지수(11비트), 가수(52비트) 기본 자료형의 종류 1 8 23 1 11 52
  • 6.
    6  실수형 변수의값 확인 기본 자료형의 종류
  • 7.
    7  실수형 변수의값 확인 기본 자료형의 종류
  • 8.
    8  실수형 변수의값 확인(IEEE 754)  float : 000046c1 (little endian) c1460000 (big endian)  부호(1비트), 지수(8비트), 가수(23비트)  -12.375 = -1100.011(2) = -1.100011 × 23 (2)  부호 : 0(양수), 1(음수)  지수 : 10000010  가수 : 10001100000... 기본 자료형의 종류
  • 9.
    9  정수형 부호표현 기본 자료형의 종류
  • 10.
    10  정수형 부호표현  plus  12345(10)  39300000(2-little endian)  00003039(2-big endian) 기본 자료형의 종류
  • 11.
    11  정수형 부호표현  minus  -12345(10)  c7cfffff(2-little endian)  ffffcfc7(2-big endian) 기본 자료형의 종류
  • 12.
    12  연산자 사용방법 축약 연산자
  • 13.
    13  연산자 사용방법과 결과 1. number == 10 2. number = number + (1 * 2) == 12 3. number = number * (9 + 1) == 120 축약 연산자
  • 14.
    14  연산자 사용방법 비트 연산자
  • 15.
    15  연산자 사용방법과 결과 비트 연산자
  • 16.
    16  연산자 사용방법과 결과  left & right & 0011 0000 0011 1001 // left & 1101 0100 0011 0001 // right ----------------------------------------------- & 0001 0000 0011 0001 // result(4145) 비트 연산자
  • 17.
    17  연산자 사용방법과 결과  left | right | 0011 0000 0011 1001 // left | 1101 0100 0011 0001 // right ----------------------------------------------- | 1111 0100 0011 1001 // result(62521) 비트 연산자
  • 18.
    18  연산자 사용방법과 결과  ~left ~ 0011 0000 0011 1001 // left ----------------------------------------------- ~ 1100 1111 1100 0110 // result(-12346) 비트 연산자
  • 19.
    19  연산자 사용방법과 결과  left << 2 (* 2n의 효과) 0011 0000 0011 1001 // left 0110 0000 0111 0010 // left << 1 1100 0000 1110 0100 // left << 2 (49380) 비트 연산자
  • 20.
    20  연산자 사용방법과 결과  left >> 2 (* 2-n의 효과) 0011 0000 0011 1001 // left 0001 1000 0001 1100 // left >> 1 0000 1100 0000 1110 // left >> 2 (3086) 비트 연산자
  • 21.
    21  연산자 사용방법과 결과  result = (condition) ? (true val) : (false val) 3항 연산자
  • 22.
    22  연산자 사용방법과 if문과의 비교 3항 연산자
  • 23.
    23  연산자 사용방법과 if문과의 비교 3항 연산자
  • 24.
    24  연산자 사용방법과 결과 전ㆍ후위 증감 연산자
  • 25.
    25  연산자 동작개념  연산 없이 출력하는 경우 1. number 변수의 값을 EAX에 저장 2. printf에 매개변수를 위해 스택에 저장(param 2) 3. printf에 매개변수를 위해 스택에 저장(param 1) 4. printf() 호출 5. ESP(Extended Stack Pointer) 이동 전ㆍ후위 증감 연산자
  • 26.
    26  연산자 동작개념  후위 연산의 경우 1. 현재 number의 값을 [ebp-0D0h]에 저장 2. number의 값을 ecx에 저장하고 1을 더한 후 number에 다시 저장 전ㆍ후위 증감 연산자
  • 27.
    27  연산자 동작개념  전위 연산의 경우 1. 현재 number의 값을 [ebp-0D0h]에 저장 1. number의 값을 eax에 저장하고 1을 더한 후 number에 다시 저장 전ㆍ후위 증감 연산자
  • 28.
    28  연산자 동작개념  연산자의 차이 전ㆍ후위 증감 연산자
  • 29.