자바 - 변수란(실수형)

거북이·2023년 1월 29일
0

java

목록 보기
2/3

1-2 실수형 타입

실수형 데이터는 정수형과 다르게 비트구조가 복잡하기에
설명하기 앞서 "공학 표기법"을 알아야한다.
공학 표기법이란?

고정소수점부동소수점 으로 나눠지는데
우리는 Float즉 "부동소수점"방식에 대해서 이야기 할 것이다.
부동 소수점은 "지수"와 "가수"로 나누어 수를 표현하는데.
지수수가 얼마나 큰 수인지를 표현하며
대체적으로 진법 ^ N의 형태로 표현된다. 또한
가수표현하고자 하는 수라고 생각하면 된다.

이런 공학적 표기법을 이용하여
IEEE754 표준을 따른
JAVA의 4Byte크기를 가진 단정밀도Float를 설명하겠다.

정수형과 같이 가장 앞 비트는 Sign Bit로 수를
양의 정수인지 음의 정수인지를 판별하는 비트인것은 다들 알 것이고..

지수 비트를 쉽게 설명하기 위하여 가수 비트를 먼져 설명하면

Mantissa bit(가수 비트)는
내가 표현하고자 하는 수를 의미하고
정밀도에 따른 길이차이가 있지만.
내가 표현하려는 수가 128.625(128과 500, 125)이라면
128 = 1000 0000이고
0.625 = 101 이므로
1000 0000 . 101 이다. (2진수 소수 계산 참고)

여기서 1이 시작되는 곳으로 .을 옮긴다면
1.0000000101이 된다.
"소수점(.)"이 이동한 거리는 7칸이고

Exponent Bit(지수 비트)는 7을 넣게 된다.
그러나 진법 ^ N의 형태인데
컴퓨터의 진법은 2진법 이기에 2^N이고

지수비트는 그냥 정수형 처럼 2진수 값을 넣으면 안된다.(2의 보수)

왜냐하면 지수 비트는 IEEE 754의 "바이어스 표현법"을 따르는데.

는 이렇게 된다면 2 ^ -127이 되어버린다..(바이어스 표기 참조)
그렇기에 0을 재대로 표현하고 싶다면.

위와 같은 비트로 표현해야
2 ^ 0을 해야 0으로 표현이 되며
바이어스 표기법이 어렵다면
간단히 0000 0000은 -127이라고 생각하면 되고
2진법 에서 덧셈을 하듯 1111 1111으로 가면
128이 된다는 사실만 기억하면 된다.

그리하여 128.625르 저장한다면.

이렇게 된다는 사실을 알고 넘어가자.
Double타입도 똑같지만 비트수가 더 크다.

profile
웹, 임베디드 분야가 문제인가? 천천히 다 배워보자.

0개의 댓글