2019년 10월 29일 화요일

[통신] [JAVA] IEEE-754 Floating-Point Conversion

JAVA

IEEE-754 Floating-Point Conversion

hex or bin ---> ieee 754 규칙으로 floating-point 변환을 예제로 설명>

* 주어진 값

Decimal : 
66 200 0 0
Hex : 
0x42 0xC8 0x00 0x00
Bin :
1000010 11001000 00000000 00000000


1) hex -> bin 으로 변경 (bin 32 자리)
Bin 1 (왼쪽기준) 자리 :
0->+
1->-

===> 예제에서는 왼쪽 1 자리가 값이 비어 있는데, 0 이란 뜻.

2) 왼쪽기준 2번째 자리부터 8개 자리 값을 decimal 변경해서, 127을 뺀다.
===> 1000010 1 -> 133(decimal) - 127 = 6    :     2의 6제곱 값을 말함.

3) 나머지 비트 자리 수를 가수로써 1 .10010000000000000000000 => 1.5625000


1) * 2) * 3) 을 모두 곱하면 결과값이 나옴. : 100.0000000

계산 참고용 사이트>
https://babbage.cs.qc.cuny.edu/IEEE-754.old/32bit.html




+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++



> 자바에서는 Float.intBitsToFloat(int value); 를 사용하면 된다.

예제 ]
 - b[i] 는 byte [], start 는 byte []에서 시작 값, length는 사용할 byte 개수


StringBuilder sb=new StringBuilder();
for(int i=start; i<(start+length); ++i){
    sb.append(byteToBinaryString(b[i]));
}
int bits = Integer.parseInt(sb.toString(), 2);
Float result = Float.intBitsToFloat(bits);