블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.5
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

공지사항

최근에 올라온 글

고정소수점 연산은 소수점이 특정위치에 있다고 가정하고, 정수연산을 한 후, 특정위치에 소수점을 찍는 방식이다.


또는 모든 소수점에 특정값을 곱해서, 정수로 만든 후, 연산을 하고, 다시 원래대로 특정값으로 나누는 방식이다.(이 경우에는 오차가 커질 수도 있고, 불필요한 연산이 발생한다)


고정소수점은 q31, q15등의로 표시하는 경우가 많다.

q31은 32비트중 31비트가 소수점이라는 이야기 이다.

이는 최대값을 1.0으로 하여 계산하는 방식이다.

이 방식의 장점은 연산이 쉽다는 것이다.


고정소수점연산의 범위 정하는 방법

1) 부동소수점으로 계산하고, 각 단계별로, 각 변수의 최대, 최소값을 측정한다.

2) 각 단계별로, 해단 변수가 최대, 최소값을 넘어서지 않도록, 소수점 위치를 조정한다.


고정소수점 연산은 대부분 q31과 같이 획일적으로 계산한다.

이 경우, 작은 숫자와, 큰 숫자를 계산할 경우, 오차가 커지는 문제가 있다.

이럴 경우에는 각 단계별로 소수점위치를 조정하여, 더 정밀한 연산을 할 수 도 있다.

물론, 프로그래밍하는데, 더 많은 시간이 들어간다.


또한, 고정소수점의 곱셈이나 나눗셈에서, 두 숫자의 소수점자리를 고려해서, 양쪽의 소수점의 위치를 이동해서 계산하는 트릭도 유효하다.


고정소수점 라이브러리를 잘 작성해 놓으면,

#define 매크로 하나로, 부동소수점으로 바꿀 수 도 있고, 고정소수점연산으로 바꿀 수 도 있다.

이 경우, 모든 연산은 매크로 함수로 표현이 된다.


Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함