티스토리 뷰
TI(텍사스 인스루먼트)TMS320 계열의 DSP 칩은 IEEE 754 와 달리 지수 비트가 최상위 비트에 위치해 있지 않다. float 형의 경우 RAW Data 를 그대로 받아왔을때 IEEE754 로 변환 해주어야 한다.
기본적인 IEEE 754 규약을 간단하게 말하면
float 형의 경우 부호(sign)비트 1비트 지수(exponent) 비트 8비트 가수(mantissa) 나머지 24비트의 순서로 총 4Bytes 사이즈로 구성이 된다.
double 형의 경우 총 64비트 중 부호(sign)비트 1비트 지수(exponent) 비트 11비트 가수(mantissa) 나머지 52비트의 순서로 총 8Bytes 사이즈로 구성이 된다.
TI의 DSP 30 타입의 float형은 지수 비트와 가수 비트 사이에 부호비트를 넣고 있으며, IEEE754 타입과 비트사이즈가 동일하다. 이에 대해선 TMS320C30 의 레퍼런스를 참고 하기 바란다.
다음은 C30->IEEE754 컨버팅 코드소스이다.
float DasBuffer::convertToIeee ( int ControllerNum, int locate, char *value ) struct ieeefloat }; union ieee_union { union c30_union { memcpy ( c30.val, value, 4 ); /*Bnf Source*/ #if 0 gDebug.hprintln (Debug::LOG, "[convertToIeee] C:%d, locate:%d, c30(f:%08x,m:%d,s:%d,e:%d), ieee(i:%08x, m:%d,s:%d,e:%d)", return ( ieee.in ); |
테스트 용으로 IEEE->C30 컨버트 소스
struct c30float struct ieeefloat }; union ieee_union { union c30_union {
int IeeeToTi(float i , float *pFloat) printf(" ieee sign %d exponenet %d mentissa %d\n",ieee.str.sign, ieee.str.exponent, ieee.str.mantissa); printf(" c30 sign %d exponenet %d mentissa %d\n",c30.str.sign, c30.str.exponent, c30.str.mantissa); /*c30.str.sign = 1; printf(" c30 sign %d exponenet %d mentissa %d\n",c30.str.sign, c30.str.exponent, c30.str.mantissa); *pFloat = (float) c30.flt; return (1); //비트 검증 코드 void showbit(float value) } |
- Total
- Today
- Yesterday
- 18-70mm
- 공돌/공순 애인님 관리법
- spring-boot #java
- 2MB 개새끼
- Signed applet
- 수락계곡
- 날자계산
- 자바스크립트
- Java
- Java PermGen eclipse 이클립스 메모리 부족
- 코드 예시
- 나는 아직 살아있는건가
- 놈놈놈
- 엑스포다리
- 랜 연결상태
- ckeditor5 #custom image file insert #uploads
- Mista Swing
- Don't let me be misunderstood
- 남자는 키
- 시동 안걸릴때 여자들은?
- 대둔산
- 윈도우 제거된 디바이스 드라이버
- D200
- Java Applet
- 멀티바이트 와이드 문자열 변경
- gettimeofday
- 섹스와 남자들의 착각
- 대청호
- 정규식 Regex
- kde 전환
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |