Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
변수와 조건문 빛나리 36 호 박승운. 파이썬 쉽게 사용하기 Python IDLE 사용 FILE - New File 로 파일 만들기 Run – Run Module 로 실행하기.
Chapter 04 컴퓨터에서 데이터 표현. 04 컴퓨터에서 데이터 표현 2 인코딩 (encoding) – 현실세계의 정보를 컴퓨터 내부에서 처리할 수 있는 이진수로 변환하는 방법 1. 컴퓨터 속에서 데이터 표현 원리 0 - 아빠 1 - 엄마 00 - 아빠 01 - 엄마.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 Part 03 상수, 변수, 자료형 안산 1 대학 디지털정보통신과 임 성 국. 2 이 장의 내용 자료형이란 무엇인가 ? 상수와 변수 정수형 부동소수형 문자형.
연산자와 표현식 C H A P T E R 3. 소개 C 에는 많은 내장 연산자가 있다 프로그램에서 연산자는 데이터와 변수 조작에 사용 C 연산자의 분류 1. 산술 연산자 2. 관계 연산자 3. 논리 연산자 4. 대입 연산자 5. 증가 감소 연산자 6. 조건 연산자 7.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
Chapter 7. 조건문.
#include <stdio.h> int main(void) { float radius; // 원의 반지름
제 9 장 구조체와 공용체.
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
Chapter 04 C 연산자의 이해.
10장 함수.
Lesson 6. 형변환.
제2장 기본 문법 (2) 주제 : 연산자, 조건문, 반복문 수원과학대학 컴퓨터정보과.
Lecture #4 제3장. 컴퓨터 산술과 논리 연산.
학습목표 변수 비주얼 베이직 자료형 변수 선언하기. 학습목표 변수 비주얼 베이직 자료형 변수 선언하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Power Java 제4장 자바 프로그래밍 기초.
Part 07 제어 구조 ©우균, 창병모 © 우균, 창병모.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 03. 변수와 연산자.
Tail-recursive Function, High-order Function
두근두근 파이썬 수업 3장 계산해봅시다..
C#.
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
Computer System Architecture
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
에어 조건문.
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
Chapter 02. 자바 기본 문법.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
1. 2진 시스템.
복습.
Chapter 07 비트와 여러 연산자.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
제3장 함수와 배열수식 전진환
Chapter08 JavaScript 시작하기
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
Chapter08 JavaScript 시작하기
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
복습.
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
제 22 강 논리식 및 논리 값 shcho.pe.kr.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
어서와 C언어는 처음이지 제21장.
제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환.
Visual Basic .NET 기초문법.
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산.
Presentation transcript:

Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모

이 장의 내용 C 언어의 연산자와 수식 산술연산자 형 변환 관계 연산자 논리 연산자 2진수를 위한 비트 연산 © 우균, 창병모

5.1 연산자와 수식 © 우균, 창병모

연산자와 수식 수식 연산자(operator) 피연산자 + - * / % > < == != >= <= 값을 나타내기 위해서 사용된 연산자들과 피연산자들의 조합 연산자(operator) 이미 정의된 산술 혹은 논리 연산을 수행하는 기호 피연산자 연산의 대상이 되는 리터럴, 상수, 변수, 혹은 다른 수식 등 종류 연산자 산술 연산자 + - * / % 관계 연산자 > < == != >= <= 논리 연산자 && || ! 증감 연산자 ++ -- 비트 연산자 & | ^ ~ << >> © 우균, 창병모

연산자 피연산자 수에 따라 ++ -- ! & * + - sizeof(형) 단항연산자(unary operator): 하나의 피연산자에 대해 연산 이항연산자 (binary operator): 두 개의 피연산자에 대해 연산 분류 연산자 단항 연산자 ++ -- ! & * + - sizeof(형) 이항 연산자 + - * / % == != > < >= <= && || & | ^ © 우균, 창병모

5.2 산술 연산자 © 우균, 창병모

산술 연산자 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 연산 정수형과 부동소수형에 대해서 가능 연산 피연산자 자료형 결과 값 단항 플러스 +a 정수형, 부동소수형 a의 값 그대로 단항 마이너스 -a a의 부호를 변경한 값 덧셈 a + b a와 b의 합 뺄셈 a - b a에서 b를 뺀 값 곱셈 a * b a와 b의 곱 나눗셈 a / b 정수형 a를 b로 나눈 몫 부동소수형 a를 b로 나눈 값 나머지 a % b a를 b로 나눈 나머지 © 우균, 창병모

나머지 연산(remainder operation) 정수에 대한 나머지 연산 첫 번째 피연산자를 두 번째 피연산자로 나눈 나머지 정수 값 예 14 %  3 =  2 -20 %  6 = -2 10 % -3 =  1 2 %  7 =  2 © 우균, 창병모

arithmetic.c 실행결과: 145 + 20 = 165 145 - 20 = 125 145 * 20 = 2900 145 / 20 = 7 145 % 20 = 5 © 우균, 창병모

부동소수형 연산 이항 산술연산자 예를 들어 주의 두 개의 피연산자가 모두 정수형이면 결과도 정수형 한 개 이상의 피연산자가 부동소수형이면 그 결과는 부동소수형 예를 들어     2 + 3.14 ⇒ 2.0 + 3.14 = 5.14     12.0/5 ⇒ 12.0/5.0 = 2.4 주의 정수 나눗셈의 결과는 정수 값이 되고 부동소수형 나눗셈의 결과는 부동소수점 값이 된다. © 우균, 창병모

conversion.c 실행결과: 화씨온도를 입력하세요 62 화씨온도 62도는 섭씨온도 16.666666도입니다 © 우균, 창병모

연산자 우선순위 연산자 우선순위 괄호를 이용한 연산 순서 조정 한 수식 내에서 연산자의 계산 순서 수식을 계산할 때 괄호로 묶인 수식은 먼저 수행된다. (fahrenheit - BASE) * 5.0 / 9.0 vs fahrenheit - BASE * 5.0 / 9.0 우선순위 연산자 1순위 단항 + 단항 - 2순위 *  /  % 3순위 +  - 산술 연산자 우선순위 © 우균, 창병모

결합순서(associativity) 좌우선 결합(left associative) 우우선 결합(right associative) 우선순위가 같은 이항 산술연산자들은 좌측에서 우측 순서로 계산한다 예 a / b * c  (a / b) * c 우우선 결합(right associative) 단항 산술연산자는 우측에서 좌측 순서로 계산한다 - + - a  - (+ (- a)) © 우균, 창병모

circle.c 실행결과: 원의 반지름을 입력하세요 10 원의 둘레: 62.800003 원의 면적: 314.000000 © 우균, 창병모

5.3 형 변환 © 우균, 창병모

묵시적 형 변환 질문? 묵시적 형 변환 만일, 2 * 1.5를 계산하면 어떻게 될까 ? int * double과 같이 서로 다른 형의 값을 곱하면 어떻게 될까? 결과는 int 형이 될까 아니면 double 형이 될까 ? 묵시적 형 변환 서로 다른 형의 혼합연산을 하면 필요한 기억장소의 크기가 작은 쪽에서 큰 쪽으로 묵시적으로 확장 변환(widening conversion) 변수 내의 값 자체는 변화가 없고, 단지 그 값을 계산할 때 변환해서 사용. 주의 ! © 우균, 창병모

확장 변환(widening conversion) 자료형의 값을 저장하는 데 필요한 기억장소의 크기가 같거나 큰 다른 자료형으로 변환 char(1) < short(2) < int(4) ≤ long(4) ≤ float(4) < double(8) ≤ long double(8) 수식에서 여러 타입이 사용되면 자동 확장 변환이 일어난다. 확장 변환 예 int won, rate = 960; float dollar; won = dollar * rate; © 우균, 창병모

대입 변환(assignment conversion) 어떤 형의 값이 다른 형의 변수에 대입될 때 자동적으로 일어나며, 이 과정에서 값이 대입될 변수 형으로 자동 변환된다. 예 dollar = won / rate; won / rate 값이 36이면, 부동소수점 값 36.0으로 변환 후 dollar에 대입 축소 변환(narrowing conversion) won = dollar * rate; 소숫점 이하 값은 버리고 정수 값만 대입한다. 축소 변환은 정보를 손실시키므로 주의! © 우균, 창병모

명시적 형 변환 타입 캐스팅은 명시적으로 형을 변환하는 방법이다. 타입 캐스팅 형식 예를 들어 (형 이름) 변수 혹은 수식 타입 캐스팅은 명시적으로 형을 변환하는 방법이다. 타입 캐스팅 형식 (형 이름) 변수 혹은 수식 예를 들어 dollar = (float) won / rate; 캐스트 연산자가 나눗셈 연산자보다 우선순위가 높다 캐스트가 won의 값에 먼저 적용되어 won 값의 부동소수점 버전을 반환 rate가 산술 확장 변환을 통해서 부동 소수점 값으로 변환 나눗셈 연산자는 부동 소수점 나눗셈을 수행 © 우균, 창병모

명시적 형 변환 예 달러를 원으로 변환하는 경우 주의 won = (int) (dollar * rate); 묵시적 형 변환 혹은 캐스팅은 대상이 되는 변수나 수식 값 자체를 변경하지 않는다. © 우균, 창병모

exchange.c 실행결과: won: 35000 dollar: 36.0000 won: 35000 dollar: 36.4583 © 우균, 창병모

5.4 관계 연산자 © 우균, 창병모

관계 연산자 C 언어의 관계 연산자 두 값의 동치 관계나 두 값 간의 대소 관계를 비교한다. 연산 연산자 자료형 결과값 같다 a == b 정수형, 부동소수형 a 값과 b 값이 같으면 1(참) 그렇지 않으면 0(거짓) 다르다 a != b a 값과 b 값이 같지 않으면 1(참) 그렇지 않으면 0(거짓) 작다 a < b a 값이 b 값보다 작으면 1(참) 그렇지 않으면 0(거짓) 작거나 a <= b a 값이 b 값보다 작거나 같으면 1(참) 그렇지 않으면 0(거짓) 크다 a > b a 값이 b 값보다 크면 1(참) 그렇지 않으면 0(거짓) 크거나 a >= b a 값이 b 값보다 크거나 같으면 1(참) 그렇지 않으면 0(거짓) © 우균, 창병모

relation.c 실행결과: (10 > 11) = 0 (10 >= 11) = 0 (10 == 11) = 0 (10 > 11)  = 0 (10 >= 11) = 0 (10 == 11) = 0 (10 != 11) = 1 (10 < 11)  = 1 (10 <= 11) = 1 © 우균, 창병모

관계 연산자 관계 연산은 산술 연산보다 우선순위가 낮다. if 문이나 while 문의 조건 a + b > 0      int val, abs_val;     ...     if (val > 0)         abs_val = val;     else         abs_val = -val; © 우균, 창병모

5.5 논리 연산자 © 우균, 창병모

논리 연산자 C 언어의 논리 연산자 논리 NOT 연산자(!), 논리 AND 연산자(&&), 논리 OR 연산자(||) ! a 결과 논리 NOT ! a a가 거짓이면 1(참)이고, 그렇지 않으면 0(거짓)이다. 논리 AND a && b a, b 모두 참이면 1(참)이고, 그렇지 않으면 0(거짓)이다. 논리 OR a || b a, b 중 적어도 한 개가 참이면 1(참)이고, 그렇지 않으면 0(거짓)이다. © 우균, 창병모

scoreInput.c 실행결과: 점수를 입력하세요: 80 80은 범위 내의 점수입니다. © 우균, 창병모

단락회로 계산 ~ &&와 || 연산자는 단락회로 계산(short-circuit evaluation) 을 한다 단락회로 계산 예 왼쪽 피연산자가 연산의 결과 값을 결정하는 데 충분하면, 오른쪽 피연산자는 계산하지 않는다. 예 score >= 0 && score <= 100 참 score >=0 score <=100 ~ 거짓 © 우균, 창병모

5.6 비트 연산자 © 우균, 창병모

비트 연산자 C 언어 시스템 프로그래밍 언어로 설계 다양한 비트 연산들을 제공 하드웨어를 다루는데 필요 a << n 구분 종류 연산자 자료형 결과 비트 이동 좌로 이동 (left shift) a << n 정수형 a를 n 비트만큼 좌측으로 이동하고 오른쪽 끝은 이동한 수만큼 0으로 채운다 우로 이동 (right shift) a >> n a를 n 비트만큼 우측으로 이동하고 왼쪽 끝은 이동한 수만큼 0 혹은 1로 채운다 비트 논리 비트 AND a & b a와 b의 비트 AND 값 비트 OR a | b a와 b의 비트 OR 값 비트 XOR a ^ b a와 b의 비트 XOR 값 1의 보수 연산 ~a a의 1의 보수 값 © 우균, 창병모

비트 이동 연산자 비트 이동 연산자 <<와 >> 비트 이동 예 비트를 좌로 혹은 우로 이동시키는 연산자이다. 비트 이동 예 11 = 0000 0000 0000 1011 17 = 0000 0000 0001 0001 0000 0000 0000 1011 << 2 = 0000 0000 0010 1100 = 44 0000 0000 0001 0001 >> 3 = 0000 0000 0000 0010 =  2 © 우균, 창병모

shift.c 실행결과: 11 << 2 = 44 17 >> 3 = 2 © 우균, 창병모

비트 연산자 진리표 a b a & b a | b a ^ b 1 a ~a 1 © 우균, 창병모

bit.c 실행결과: 1f05 & 31a1 = 1101 1f05 | 31a1 = 3fa5 1f05 ^ 31a1 = 2ea4 ~1f05  = ffffe0fa © 우균, 창병모

비트 연산 예 비트 연산 예 16진수 값 2진수 값 a 0x1f05 0001 1111 0000 0101 b 0x31a1 0011 0001 1010 0001 ~a 0xe0fa  1110 0000 1111 1010 a & b   0x1101 0001 0001 0000 0001 a | b   0x3fa5 0011 1111 1010 0101 a ^ b   0x2ea4 0010 1110 1010 0100 © 우균, 창병모

Key Point © 우균, 창병모

Key Point 1 수식 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/) 연산 정수에 대한 나머지 연산 값을 나타내기 위해서 사용된 연산자들과 피연산자들의 조합 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/) 연산 정수형과 부동소수형에 대해서 가능하다. 정수에 대한 나머지 연산 첫 번째 피연산자를 두 번째 피연산자로 나눈 나머지 정수 값 정수 나눗셈의 결과는 정수 값이 되고 부동소수형 나눗셈의 결과는 부동소수점 값이 된다. 연산자 우선순위(operator priority) 한 수식 내에서 연산자의 계산 순서 수식에서 여러 타입이 사용되면 자동으로 확장 변환이 일어난다. © 우균, 창병모

Key Point 2 대입 변환 타입 캐스팅은 명시적으로 형을 변환하는 방법이다. C 언어의 관계 연산자들 어떤 형의 값이 다른 형의 변수에 대입될 때 자동으로 일어나며, 이 과정에서 값이 대입될 변수 형으로 자동 변환된다. 타입 캐스팅은 명시적으로 형을 변환하는 방법이다. C 언어의 관계 연산자들 두 값의 동치 관계나 두 값 간의 대소 관계를 비교한다. C 언어는 논리 연산자 논리 NOT 연산자(!), 논리 AND 연산자(&&), 논리 OR 연산자(||) 단락회로 계산 왼쪽 피연산자가 연산의 결과 값을 결정하는 데 충분하면, 오른쪽 피연산자는 계산하지 않는다. 비트를 좌로 혹은 우로 이동시키는 연산자 <<와 >> © 우균, 창병모

프로그래밍 실습 © 우균, 창병모

▶ 프로그래밍 실습 환율계산기 프로그램을 작성해보자. 이 프로그램은 다음과 같이 동작한다. (1) 먼저 기준 환율을 입력받는다.      1달러 기준 환율을 입력하세요: 960 (2) 메뉴를 출력한다.      1. 기준 환율 출력      2. 원화를 달러화로 변환      3. 달러화를 원화로 변환      메뉴를 선택하세요: © 우균, 창병모

▶ 프로그래밍 실습 (3.1) 1번 메뉴를 선택한 경우 (4.1) 다음과 같이 결과를 출력한다.      오늘의 기준환율은 1달러 960원입니다. (3.2) 2번 메뉴를 선택한 경우      원화를 입력하세요: 35000 (4.2) 다음과 같이 결과를 출력한다.      35000원은 36.46 달러입니다. (3.3) 3번 메뉴를 선택할 경우      달러화를 입력하세요: 120.99 (4.3) 다음과 같이 결과를 출력한다.      120.99 달러는 116150 원입니다. © 우균, 창병모