Bist du noch da ?
Ich schreib mehr oder weniger Pseudo-Code, weil's schon lange her ist, daß ich Basic geschrieben habe. Aber Du denkst ja mit.

Bezieht sich auf das IEEE -Format, Microchip is a bißerl anders

Wir brauchen:
Vorzeichen = 0 (integer)
Exponent = 0 (integer)
Ergebnis = 0 (float 32 Bit == 4 Byte)

Wir haben:
Zeichen(1) bis Zeichen(4)

1) Vorzeichen/Exponent: (*g* was sein muß, muß sein *g*)
Das höchste Bit vom Exponenten ist das Vorzeichen
WENN (ASC(Zeichen(1)) >= 12 dann:
Vorzeichen = -1
Exponent = ASC(Zeichen(1)) - 12 * 2
ELSE
Vorzeichen = +1
Exponent = ASC(Zeichen(1)) * 2
END-WENN

2) Exponent Das kleinste Bit vom Exp. ist das höchste von Zeichen(2) bzw. der Mantisse (IEEE). Die Mantisse hat dort aber immer 1, deswegen steht der Einser explizit nicht da, den muß man sich denken

WENN (ASC(Zeichen(2)) >= 12 dann:
Exponent = Exponent + 1 (dort gehört der 1er hin)
ELSE
Zeichen(2) = CHR(ASC(Zeichen(2) + 12 (keiner da, g'hört aber hin)
END-WENN
Exponent = Exponent - 128 (Basis 12

*schnauf* Diese eigentlich simple Bit-Shifterei geht vielleicht auch in Basic besser, weiss nicht.

2 Mantisse:
Ergebnis = asc(Zeichen(2)) * 65535
+ asc(Zeichen(3)) * 256
+ asc(Zeichen(4))

3 ergebnis zu von 1nnnn auf 1,nnn umrechnen

Ergebnis = Ergebnis / 8388480

3 Exponent reinrechnen
Exp. --> Ergebnis = Ergebnis * (2 hoch (+/-) Exponent)
Vielleicht als schleife, "exponent"-mal

4 Vorzeichen
Ergebnis = Ergebnis * Vorzeichen

*tiefseufz*

EXAMPLE
Testen natürlich mit bekannten Zahlen, einfachster Fall "+1.0"
es sollte sein
Zeichen(1) = 64
Zeichen(2) = 0
Zeichen(3) = 0
Zeichen(4) = 0


Vorzeichen = +1
Exponent = ASC(Zeichen(1)) * 2 => 128
Exponent = Exponent - 128 ==> 0
Zeichen(2) = CHR(ASC(Zeichen(2) + 12 (Einser muß aber sein)

Zeichen(2) = 128 (erst jetzt)
Zeichen(3) = 0
Zeichen(4) = 0

Ergebnis = 128 * 65535 + 0 + 0 => 8388480
Ergebnis = Ergebnis / 8388480 ==> 1

Exp. + --> Ergebnis = Ergebnis * (2 hoch 0 ) ==> 1

Vorzeichen ist +1 -- => also bleibt 1.0


*ganztiefseufz*


Ich hoffe, ich habe dir da keinen Stiefel erzählt, prinzipiell bin ich mir sicher, aber ich werd's selbst noch testen


Laß hören ! mfg robert