| 

.NET C# Java Javascript Exception

3
tag.

ich habe eine dualzahl z.b. 0b11111111=0d255. die zahl kodiert bei mir eine dezimalzahl mit 10tel kommastelle also 255=>25,5. da ich das ganze auf nem lcd ausgeben muss, hatte ich mir gedacht ich schneide die erste 10er stelle von 255 ab, so dass nur noch 25 bleiben und gebe dann sowas wie:
print 25
print ","
print 5

aus. kann mir jemand erklären wie ich dieses problem lösen kann?
wie gesagt in (avr-)assembler.
News:
16.08.2009
x0150 61 2 2
3 Antworten
1
Ich weiß die Lösung zwar nicht, aber im Prinzip ist die Sprache Assembler hierbei egal. Es reicht, einen Algorithmus in einer höheren Sprache zu finden, der ohne Division auskommt. Dann kann man ihn als Assembler darstellen.
16.08.2009
jor 791 2 7
0
Mit Modulo und Division kann man sowas erledigen:
255 / 10 = 25 (Gerundet)
255 mod 10 = 5

Da allerdings der Faktor 10 in den meisten Architekturen eher schlecht ist, würde ich empfehlen
das ganze als BCD-Variante zu speichern. Z.b.
die ersten 5 Bit als Vorkommastellen und die restlichen 3 als Nachkommastellen, oder je nachdem wie du es halt brauchst. Dann kannst mit Binäroperationen wie Rightshift um Anzahl der Nachkommastellen die Vorkommastellen und mit einer And-Verknüpfung die Nachkommastellen lesen.
1001 0100 in BDC = 9,4 in Dezimal, da
10010100 rsh 4 = 1001b = 9 und 10010100b and 1111b = 0100b = 4.
In vielen Prozessoren wird BCD auch unterstützt. Ist halt allerdings nicht das kompakteste Format.

Eventuell ist das auch eine gute Quelle:
Zahlenkonversion mit Avr-Asm
07.09.2009
arj 21 1 1
arj 21 1 1
0
Da die AVRs keine Division unterstützen, bleibt dir nichts anderes übrig, als von deinem Ausgangswert sukzessive 10 zu subtrahieren (müsste mit subi gehen) und zwar solange, bis das Ergebnis wieder größer ist, als dein vorhergehendes Ergebnis (könnte auch sein, dass ein Statusbit gesetzt wird).

Vorkommastellen = Anzahl der Subtraktion - 1
Nachkommastellen = vorletztes Ergebnis
07.09.2009
Vector 61 1 2
Es fehlt noch der Hinweis, dass die Berechnung des Wertes keine feste Laufzeit hat, sondern vielmehr vom Ausgangswert abhängt.
Vector 07.09.2009

Stelle deine Html-Frage jetzt!