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

 

 

 

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