[C++] Boolean & Floating point 불리언과 부동소수점
Boolean & Floating point 불리언과 부동소수점
인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다.
😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기!
Floating point 부동 소수점
- bool은 그냥 1바이트 정수에 불과하다.
- 어셈블리 언어에서는 bool이라는 것이 없다.
- bool만 봐도 참/거짓 둘 중 하나라는 힌트를 준다. (가독성)
- 0은 false
- 0이 아닌 값은 true
Floating point 부동 소수점
- 부동소수점: .을 유동적으로 움직여서 표현하는 방법
- 프로그래밍에서의 부동소수점은 항상 '근사값'이다.
- 1/3 = 0.333333333333333333333333333
- 수가 커질수록 오차 범위도 커진다
- 따라서 실수 2개를 ==으로 비교하는 것은 지양한다.
- ex. 3.1415926535 10진법
- 3.1415926535 = 0.31415926535 * 10 = 314.15926535 * 10^-2
- 1) 정규화 = 0.31415926535 * 10
- 2) 31415926535 (유효숫자) 1 (지수)
- 0.31415926535는..
- 31415926535가 유효숫자이고 10^1이기 때문에 지수는 1이다.
- ex. -3.375 2진법
- 1) 2진수 변환 = (3) + (0.375) = 0b11 + 0b0.011 = 0b11.011
- 0.375 = 0.5 * 0 + 0.25 * 1 + 0.125 * 1 = 0b0.011
- 2) 정규화 0b1.1011 * 2^1
- 1(부호) 1(지수) 1011(유효숫자)
- 단 지수는 unsigned byte라고 가정하고 숫자+127 만들어줌
- 예상 결과 : 0b 1 10000000 1011000 0000 0000 0000 0000
- 1) 2진수 변환 = (3) + (0.375) = 0b11 + 0b0.011 = 0b11.011
float 부호(1bit) 지수(8bit) 유효숫자(23bit) = 32 비트 = 4 바이트
double 부호(1bit) 지수(11bit) 유효숫자(52bit) = 64 비트 = 8 바이트
코드
더보기
#include <iostream>
using namespace std;
// 불리언(boolean) 참/거짓
bool isHighLevel = true;
bool isPlayer = true;
bool isMale = false;
int isFemale = 1;
// bool < 1바이트 정수
// - al
// 실수 (부동소수점)
// float double
// 3.14
// 쩜 앞/뒤를 기준으로 16/16씩 끊으면? => 가능은 하지만 표현 가능한 숫자가 한정적이고 비효율적이다.
// (0~65535) . (0~65535)
// float 부호(1) 지수(8) 유효숫자(23) = 32 비트 = 4 바이트
// double 부호(1) 지수(11) 유효숫자(52) = 64 비트 = 8 바이트
float attackSpeed = -3.375f; // 4바이트 // float 형식으로 사용하려면 뒤에 f를 붙여준다.
double attackSpeed2 = 123.4123; // 8바이트
int main()
{
cout << isHighLevel << endl;
}
- Assembly 언어 관점에서는 bool은 int와 차이가 없다.
- byte ptr에 담아서 쓴.
'⭐ Programming > C++' 카테고리의 다른 글
[C++] 산술연산 (0) | 2022.03.19 |
---|---|
[C++] 문자와 문자열 (0) | 2022.03.19 |
Pseudo code : Bull Cow Cartridge (0) | 2022.03.10 |
Pre-Increment/Decrement, Post-Increment/Decrement (0) | 2022.03.10 |
Visual Studio Code 단축키 (0) | 2022.03.10 |
댓글
이 글 공유하기
다른 글
-
[C++] 산술연산
[C++] 산술연산
2022.03.19 -
[C++] 문자와 문자열
[C++] 문자와 문자열
2022.03.19 -
Pseudo code : Bull Cow Cartridge
Pseudo code : Bull Cow Cartridge
2022.03.10 -
Pre-Increment/Decrement, Post-Increment/Decrement
Pre-Increment/Decrement, Post-Increment/Decrement
2022.03.10