Addition/Subtraktion
A B C />
+ D E F
----------------
:= C+F
+ B+E 0
+ A+D 0 0
================
= G A+D B+E C+F
Bei der Addition/Subtraktion kann man leicht die einzelnen Teile addieren, es muß nur der Übertrag beachtet werden. Genauigkeitsprobleme gibt es keine, einzig ein Überlauf (Symbol G) ist möglich.
Multiplikation
A , B
* C , D
------------------
B*D
+ A*D 0
+ C*B 0
+ 0 A*C 0 0
==================
= E F , G H
Multiplikationen sind auch relativ leicht zu machen, indem man die einzelnen Teile multipliziert. Das Ergebnis benötigt maximal doppelt so viel Platz wie die Operanden.
Division
Die Division der speziellen Form (Division durch kleine Zahlen)
A B , D
: D , -
--------------------------
A:D 0 ,
+ R+B/D,
+ ,R+C:D
+ , 0 R:D
+ , 0 0 R:D
+ ...
==========================
ist wie man sieht relativ leicht zu lösen. Die Division der allgemeinen Form (Division durch große Zahlen) A B D E ist leider nur mit rechenintensiveren Vergleichs und Bitoperationen beizukommen.
Zur Verdeutlichung der Festkomma Arithmetik habe ich ein Beispielprogramm in Assembler geschrieben, das die Zahl PI nähert. Das Programm basiert auf der alternierenden Summe der Kehrwerte ungerader Zahlen: Pi/4 = 1/1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... => 3,1415926 ... (In Derives Notation: SUM(4*(-1)\"(n+I)/(n*2-1),n,1,10000) )
|