int형도 32비트도 float형도 32비트인데 왜 값의 범위가 다를까?

 

그건 실수형의 저장방식 때문이다.

 

전 글에서 서술했듯이 실수형은

 

부호  지수  가수로 나뉜다.

 

 

 

계산 방식


 

 

5.5면 101.1인데 (정수 5는 101 이고 소수점 0.5는 0.1이됨)

실수형 계산을 위해 정규화(정수부분에 1만 남기는것) 을 하면 1.011이되고 두번 소수점을 옮겼음으로 1.011 * 2^2가 된다.

 

여기서 부호는 0 지수는 2 가수는 1.011인데   지수부분에는 bias(지수가 음수가 되는것을 막기위한)로 127을 더해줘서

 

부호는 0 지수는 1000 0001 가수는 1011  00000 나머지 비트자리는 0 가된다.

 

 

 

float의 범위인 지수부분이 8비트중에서 사용할수 있는것이 1~254인데 이를 양수 음수로 나누면 -126 ~ 127까지 사용할 수 있고 이를 10진수로 하면   2^-126 = 1.17 * 10^-38      

                                          2^127 = 1.17 * 10^38   

 

이다.

 

 

 

 

'IT 관련 > JAVA' 카테고리의 다른 글

자바 printf 와 Scanner  (0) 2022.05.19
자바 상수,리터럴 ( constant , literal)  (0) 2022.05.17
Java 변수의 타입  (0) 2022.04.17
Java의 변수  (0) 2022.04.17
자바(JAVA)란?  (0) 2022.04.08

+ Recent posts