본문 바로가기
Algorithm/바킹독의 알고리즘 강의

자료형

by IT learning 2021. 4. 7.
728x90

정수 자료형

char 자료형은 1byte = 8bit 이다.

-2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
0 0 0 0 1 0 0 1

제일 왼쪽이 자연스럽게 2^7이지만 char에서는 제일 왼쪽이 독특하게 -2^7이다.

 

unsigned char 최솟값 최댓값 : 0 ~ 255

cahr 최솟값 최댓값 : -128 ~ 127

 

short(2) = 32767

int(4) = 2.1*10^9

long long(8) = 9.2*10^18

 

Integet Overflow

 

컴퓨터는 그냥 시킨대로 계산을 하기 때문.

-2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
0 1 1 1 1 1 1 1

위 수는 127.

127에서 1을 더하면 어떻게 될까?

-2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
1 0 0 0 0 0 0 0

-128이 된다. 

 

컴퓨터는 명령받은 대로 이진수 계산을 했을 뿐, 결과는 올바르지 않았던 것.

 

각 자료형의 범위에 맞는 값을 가지게끔 연산을 시키면 된다.

 

 

실수 자료형

 

float(4) = 32칸

double(8) = 64칸

 

3 = 2^1+2^0 = 11(2)

 

3.75 = 2+1+0.5+0.25 = 11.11(2)

 

 

sign field = 해당 함수가 음수인지 양수인지 저장하는 필드

exponent field = 과학접 표기법에서의 지수를 저장하는 필드 

fraction = 유효숫자 부분을 저장하는 필드

 

float

sign(1) exponent(8) fraction(23)

 

double

sign(1) exponent(11) fraction(52)

 

ex) -6.75 = -1.1011(2) * 2^2

 

float 자료형으로 예시

1 10000001 1011000..00

 

제일 왼쪽부터 채우는 것. `이다. 나중에 검색 ㄱㄱ.

 

1 실수의 저장/연산 과정에서 반드시 오차가 발생할 수 밖에 없다.

float: 유효숫자 6자리

double: 유효숫자 15자리

 

2 double 에 long long 범위의 정수를 함수로 담으면 안된다.

double 은 유효숫자 15자리 인데 long long 은 최대 19자리이다. 오차가 섞인 값이 저장될 수도 있다.

 

3 실수를 비교할 때는 등호를 사용하면 안된다.

오차때문에 비교하고 싶으면 아주 작은 오차값일 경우에만.

728x90

'Algorithm > 바킹독의 알고리즘 강의' 카테고리의 다른 글

배열에 0 채우기 좋은 방법  (0) 2021.04.09
배열의 정의와 성질  (0) 2021.04.08
표준 입출력  (0) 2021.04.07
STL과 함수 인자  (0) 2021.04.07
대략 허용가능한 N의 크기  (0) 2021.04.07

댓글

IT_learning's Commit