Lecture 5 C의 기초적인 값(primitive value)의 컴퓨터에서의 표현 문자, 정수, 실수, 참/거짓

Slides:



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

기본 자료형 순천향대학교 정보기술공학부 이 상 정. 자료형의 선언 컴퓨터프로그래밍 1 순천향대학교 정보기술공학부 이 상 정 3 자료형 선언 기본 자료형문자형 char 정수형 int 실수형 float double 형없음 void.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
재료수치해석 HW # 박재혁.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
#include <stdio.h> int main(void) { float radius; // 원의 반지름
제 9 장 구조체와 공용체.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
3. printf()와 데이터 형식.
Numerical Analysis - preliminaries -
제 18 강 데이터 타입 타입, 변환, 캐스팅 shcho.pe.kr.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
디지털영상처리 및 실습 대구보건대학 방사선과.
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
C++ Programming: Sample Programs
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
내용 프로그래밍 언어(programming language) C 언어란?? C 언어 역사 C 언어 특징 C 프로그램의 구조
제 2 장 변수와 상수.
6장. printf와 scanf 함수에 대한 고찰
14장. 포인터와 함수에 대한 이해.
제 3 장 상수와 변수
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
11장. 1차원 배열.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
C#.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
제2장 데이터형과 표준 입출력문 문봉근.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
상수와 기본 자료형.
C 3장. 변수와 데이터형 #include <stdio.h> int main(void) { int num;
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Chapter 04 자료 유형.
2장. 변수와 타입.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Chapter 04. 데이터의 표현과 연산(Ⅱ).
Byte Alignment ㈜ 웰컴정보시스템 김 정 은.
8주차: Strings, Arrays and Pointers
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
-Part1- 제6장 자료형이란 무엇인가.
C언어 프로그래밍의 이해 Ch03. 기본 자료형, 변수와 상수.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
3주차: Control Flow and Others
제03장 정보의 표현.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Lecture 5 C의 기초적인 값(primitive value)의 컴퓨터에서의 표현 문자, 정수, 실수, 참/거짓 디지탈 숫자의 한계

컴퓨터가 사용하는 메모리의 단위 bit byte = 8 bits word = 4 bytes = 32 bits 한계: 무한히 많이 표현할 수 없슴

C의 기초적인 값들을 위해 사용하는 메모리의 양 char short int long float double 1 byte 2 bytes 4 bytes 8 bytes

변수 선언때 그만한 메모리가 할당됨 변수의 타입으로 할당받고 싶은 메모리 크기를 지정한다: char x; shor y; int z; long w; float a; double b; 타입의 또 다른 역할도 있슴을 명심: 내가 제 정신으로 프로그램하고 있는 지를 컴퓨터가 확인할 수 있도록 도와주는 코멘트 나 자신도 확인할 수 있도록 도와주는 코멘트

C는 그때그때 달라요 기본적인 값을 표현하는데 할당하는 메모리 양이 다를 수 있다. 사용하는 번역기(compiler)와 실행되는 컴퓨터에 따라. sizeof(int), sizeof(long), sizeof(float), sizeof(double) 등으로 확인해 보아야

sizeof함수로 확인가능 sizeof(<type>) <type> 값을 표혀하기 위해 할당하는 메모리 크기를 byte 단위로 알려준다. #include <stdio.h> int main(void) { printf(“char: %d\n”, sizeof(char)); printf(“short: %d\n”, sizeof(short)); printf(“int: %d\n”, sizeof(int)); printf(“long: %d\n”, sizeof(long)); printf(“float: %d\n”, sizeof(float)); printf(“double: %d\n”, sizeof(double)); }

내 번역기와 컴퓨터에서의 결과 % gcc t.c % a.out char: 1 short: 2 int: 4 long: 4 float: 4 double: 8 %

char는 1 byte 할당 1 byte = 8 bits = 256가지를 표현 가능 영문 한글 자모 26개 x 2 + etc

정수 계열의 메모리 크기 int: 4 bytes short <= int <= long 4 bytes로 표시가능한 수 00000000 00000000 00000000 00000000에서 11111111 11111111 11111111 11111111까지 232개의 서로 다른 값을 표현할 수 있다.

signed v.s. unsigned int 타입의 변수가 가질 수 있는 정수 범위 unsigned int 의 경우 -231, -231+1, ..., -1, 0, 1, 2, ..., 231–1 -2,147,483,648  2,147,483,647 unsigned int 의 경우 0, 1, 2, 3, ..., 232 – 1 0  4,294,967,295

실수 계열의 메모리 크기 float, double 왜 “float”라고 했을까? 소수점이 떠다님 float: 4 bytes double: 8 bytes 왜 “float”라고 했을까? 소수점이 떠다님

4 bytes = 1 bit for sign + fixed bits for 2 parts 부동 소수점 (float) 4 bytes = 1 bit for sign + fixed bits for 2 parts mantissa exponent 부동 소수점 표현 = 2부분 첫번째는 부호화된 고정 소수점 숫자:mantissa 두번째는 소수점의 위치를 알려주는 지수: exponent 예) +6132.789 를 부동 소수점 표현으로 나타내면, mantissa exponent +0.6132789 +04

수를 표현하는 한정된 메모리때문에 정확한 계산이 불가능 (1/5) 3가지 에러가 가능하다 error due to finite representation 유한개의 bit로 1/3를 정확히 표현 불가능 가능하기도 하고 (어떻게?) error due to arithematic op using “normalized” floating point numbers rounding error, round-off error 2.407 + .005 = 2.412 as 2.41 2.407 + .009 = 2.416 as 2.42 error due to conversion from decimal to binary 32 bit computer stores 0.1 as 0.0999999

수를 표현하는 한정된 메모리때문에 정확한 계산이 불가능 (2/5) #include <stdio.h> int main(void) { float x, y, z, r; x = 1.000000019e+38; y = x + 1.0e21; z = x – 1.0e21; r = y – z; printf(“%f\n”, r); } % gcc float-error.c % a.out 0.000000

수를 표현하는 한정된 메모리때문에 정확한 계산이 불가능 (3/5) #include <stdio.h> int main(void) { double x; float y, z, r; x = 1125899973951488.0; y = x + 1; z = x – 1; r = y – z; printf(“%f\n”, r); } % gcc double-error.c % a.out 134217728.000000

수를 표현하는 한정된 메모리때문에 정확한 계산이 불가능 (4/5) x x floats reals doubles 21 x 21 x-10 x+10 rouding error x x-1 x+1 rouding error

수를 표현하는 한정된 메모리때문에 정확한 계산이 불가능 (5/5) #include <stdio.h> int main(void) { float x, y; x = 0.1; y = x – 0.0000001; printf(“%f\n”, y); } % gcc conv-error.c % a.out 0.100000

Lecture 6 C로 복잡한 구조의 값 표현하기 메모리 관리하기 복잡한 구조 프로그래밍 기술 array, struct, dynamic memory allocation 메모리 관리하기 malloc, free 복잡한 구조 프로그래밍 기술 value oriented v.s. object oriented