View Full Version : Hexadezimal in Dezimal --> X2D
bei der Speicher Überlagerung von einem String und einer als Integer definierten Zahl geht die interne Zahlendarstellung (Prozessor abhängig) in die Umrechnung ein, was zu deinem Problem führt.
[...]
mfg
Dieter Bender
Wusste nicht, dass es da von Prozessor zu Prozessor unterschiede gibt. Aber man lernt nie aus.
Genaue Spezifikationen gibt es von dem Tester nur über die Kommunikation. Zum umrechnen von Milliampere nach Bar weiss ich aber, dass 1,6 Milliampere 1 Bar sind. Das reicht ja zum Umrechnen.
Mfg KAMPI
Da ja bei "00F6" "F6" das höherwertige Byte ist ergibt das F600, und da das oberste Bit gesetzt ist, ist der Wert negativ.
Bei der Definition U für Unsigned, sollte das eigentlich ignoriert werden.
Um aber Prozessorneutral zu sein, muss man eben per Spezifikation (siehe Dieter) genau wissen, wie Daten zu interpretieren sind und natürlich auch über Speicherungen auf Prozessoren informiert sein.
Auch Terminologien sind da manchmal unterschiedlich.
Bei Intel (und fast allen PC'lern) werden Bits in Bytes z.B. von rechts nach links gezählt, bei IBM und somit AS/400 aber von links nach rechts.
Wo ist also Bit 0 ?
Naja, und das mit den LOWORD/HIWORD bzw LOWBYTE/HIGHBYTE stammt auch aus der C++/C-Programmierung, wo eben Makros je nach Zielsystem (also Hardware) die Interpretation zur Compilezeit auflösen.
Wusste nicht, dass es da von Prozessor zu Prozessor unterschiede gibt. Aber man lernt nie aus.
Eine ganz brauchbare Erklärung gibt es schon in der Wikipedia: Byte-Reihenfolge – Wikipedia (http://de.wikipedia.org/wiki/Byte-Reihenfolge)
Intel hat schon bei seinem ersten 8-Bit-Prozessor, dem 8008 (1972), mit diesem Unfug angefangen; da hatten die Adress-Register schon stolze 14 Bit, die seit dem 4-Bit-Vorgänger hinzugekommenen 6 Bit wurden einfach an den alten 16-Bit Befehl des 4004 (8 Bit Befehl, 8 Bit Adresse) angehängt (das war aus Sicht der Entwickler - hard und soft -vermutlich sogar sinnvoll).
Bei dem 8080 (1974) wurden dann die 14 Bit auf 16 Bit erweitert, und man hatte ein 16-Bit Adressformat, mit dem man volle 64K(!) adressieren konnte.
Dieses verquere Format hat man dann aus Kompatibilitätsgründen bis heute beibehalten müssen.
Prozessorhersteller, die früher (IBM) oder später (Motorola) auf den Markt kamen, haben es anders gemacht.
mfg
Werner
(der noch einen Intel-Katalog von 1977 im Regal stehen hat)