inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

불리언과 부동소수점

부동 소수점의 지수부 표현 방법에 대하여

해결된 질문

454

leomessi

작성한 질문수 50

0

지수부는 unsigned라고 말씀해주셨는데요, 음수 지수는 사용되지 않는건가요??

C++

답변 2

2

Rookiss

음수를 표현하는 1비트가 따로 예약되어 있습니다.

0

뚜다배

십진수에서 이진수로 변환한뒤 1.xxxxx형태로 정규화하는 과정에서 지수부는 양수가 될수도 음수가 될수도 있습니다!! 그렇기에 양, 음수 지수 모두를 표현하려고 8bit 256의 절반씩을 나누어 쓰도록 127을 더해주는 것 같아요.
강사님이 들어주신 예와 다른 예(0.0390625)를 비교해봅시다.

3.375 --(이진수변환)--> 11.011
11은 두자리 수 이므로 정규화 하려면 부동 소수점을 왼쪽으로 한칸 옮겨야 합니다! 따라서
11.011 = 1.1011 * 2^1 (소수점을 좌로 한칸 옮겼으므로 지수부는 1이 되는겁니다!)

0.0390625 --(이진수변환)--> 0.0000101
1이 소수점 왼쪽에 위치하기 위하여 소수점은 오른쪽으로 5칸 가야겠죠? 그러면 다음과 같을겁니다.
0.0000101 = 1.01 * 2^-5 (소수점을 우로 5칸 옮겼으므로 지수부는 -5)

위 아래 bit 표현식은 127의 bias를 더해서 각각
1000 0000, 0111 1010 이 됩니다.
127을 더함으로써 양수 지수 음수 지수 모두 표기할 수 있게 되는겁니다!
신기한 점은 맨 앞 비트가 1이면 양수 지수, 0이면 음수 지수 임을 알 수 있다는 점(127을 더하기 때문이겠죠?).

참고로 double의 경우 지수부에 11bit 즉 2048을 나눠쓰기 위해 1023의 bias를 가해주니깐 2^-1024 ~ 2^1024 의 지수부를 표현할 수 있다고 합니다~

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

541

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

441

1

strcpy() 구현 관련 질문

0

513

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

452

1

클래스 타입의 포인터 질문합니다

0

546

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

497

1

템플릿 특수화 관련 질문

0

384

1

포인터 관련 질문합니다!

0

263

1

Unable to start assembler. Check your settings.

0

829

2

cpu선택

0

539

1

포인터 질문이 있습니다

0

322

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

584

1

iterator 삭제관련

0

406

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

310

1

15 분 45초 대 질문

0

308

0

스택 프레임 질문합니다!

2

306

1

오른값 참조 in 게임

0

384

0

동적할당 질문이 있습니다

0

449

1

안녕하세요 메모리에 대해 질문드립니다.

0

304

1

함수객체 의 매개변수

0

358

1

복사생성자

0

434

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

419

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

353

1

스택 오버플로우

2

790

1