불리언과 부동소수점

3917 단어 cppcpp
#include <iostream>

using namespace std;

//불리언과 실수

//불리언(boolean) 참/거짓

bool isHighLevel = true;

bool isPlayer = true;

bool isMale = false;

//[Note]

//bool은 1비트만 사용함. 하지만 1바이트 정수이다.  -> why? 최소 단위가 1바이트이기 때문

//어셈블리에서는 bool이라는 것은 없음

//bool만 봐도 참/거짓 둘 중 하나라는 힌트가 됨. (가독성)

int isFemale = 1;//int를 사용해도 bool과 같은 의미로 사용 가능하다

//실수 (부동소수점)

//float double

//3.14

//쩜 앞/뒤를 기준으로 16/16씩 끊으면? -> (0~65535) . (0~65535) 좋은 방법이 아니다.

//부(浮)동(動)소수점

//.을 유동적으로 움직여서 표현하는 방법

//ex)3.1415926535를 표현 할 때

//3.1415926535 = 0.31415926535 * 10 = 314.15926535* 10^-2

//1)정규화 = 0.31415926535 * 10

//2)31415926535 (유효숫자) 1 (지수/몇승을 곱했는가)

//float 부호(1) 지수(8) 유효숫자(23) = 32비트 = 4바이트 => 더블보단 작고 간단한 숫자를 표현할 수 있다.

//double 부호(1) 지수(11) 유효숫자(52) = 64비트 = 8바이트 => 더 정밀하고 큰 숫자를 표현할 수 있다.

//ex)-3.375라는 값을 저장 

//1) 2진수로 변환 = (3)+(0.375) = 0b11 + 0b0.011 = 0b11.011

// 0.375 = 0.5 * 0 + 0.25 * 1 + 0.125 * 1 = 0b0.011

//2) 정규화 ob1.1011 * 2^1

// 1(부호) 1(지수) 1011(유효숫자)

//단 지수는 unsigned byte라고 가정하고 숫자 + 127을 만들어줌

//3) 예상 결과: ob 1 10000000 10110000000000000000000

//프로그래밍 할 때 부동소수점은 항상 '근사값' 이라는 것을 기억해야함.

//특히 수가 커질 수록 오차범위도 매우 커짐

//실수 2개를 ==으로 비교하는 것은 지양해야함

float attackSpeed = -3.375f; //float은 4바이트

double attackSpeed2 = 123.4123; //double은 8바이트

int main()

{

 cout << isMale << endl;

}

좋은 웹페이지 즐겨찾기