Binär codierte Dezimalzahl (BCD) zur Umwandlung Hexadezimal
Frage
Kann mir jemand erklären, wie BCD Hexadezimal? Zum Beispiel, wie kann ich konvertieren 98 (BCD) auf Hexadezimal. Danke.
Lösung
Ich verstehe nicht ganz Ihre Frage, aber ich glaube, dass z.B. jemand gibt Ihnen eine Zahl 98 in BCD codiert, das wäre:
1001 1000
und Sie sollen bekommen:
62H
Was würde ich vorschlagen:
1) convert BCD-codierten Wert zu Dezimalwert (D)
2) convert D hexadezimalen Wert.
Je nachdem, welche Programmiersprache Sie wählen, wird diese Aufgabe leichter oder schwerer sein.
EDIT: In Java könnte es sein:
byte bcd = (byte)0x98; // BCD value: 1001 1000
int decimal = (bcd & 0xF) + (((int)bcd & 0xF0) >> 4)*10;
System.out.println(
Integer.toHexString(decimal)
);
Andere Tipps
BCD ist eine Teilmenge von hexadezimal, so gibt es keine Konvertierung erforderlich - jeder gegebenen BCD-Wert ist identisch mit dem entsprechenden hexadezimalen Wert. Zum Beispiel ist '98' in BCD 10011000, die die gleichen wie 98 in hexadezimal
istFür jeden BCD codierten Wert (dh in einem int passen).
Iterative:
unsigned int bcd2dec(unsigned int bcd)
{
unsigned int dec=0;
unsigned int mult;
for (mult=1; bcd; bcd=bcd>>4,mult*=10)
{
dec += (bcd & 0x0f) * mult;
}
return dec;
}
Rekursiv:
unsigned int bcd2dec_r(unsigned int bcd)
{
return bcd ? (bcd2dec_r(bcd>>4)*10) + (bcd & 0x0f) : 0;
}
würde ich eine Tabelle mit 256 Einträgen erstellen, Abbildung aller BCD-Bytes in ihre binäre Äquivalent; Sie können dann hex Druck Ihrer Programmiersprache verwenden.
Gehen Sie zwischen verschiedenen Kombinationen von Hex, Dezimal und Binär. Wenn Sie wissen, wie binäre funktioniert, dann sollten Sie leicht in der Lage sein BCD zu verwenden:
Hex Dec BCD
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
A 10 0001 0000 <-- notice that each digit looks like hex except it can only go to 9.
B 11 0001 0001
C 12 0001 0010
D 13 0001 0011
E 14 0001 0100
F 15 0001 0101
Wenn Sie diesen Teil davon nach unten kommen, sollen Sie in der Lage sein, teilt die Verwendung von 10 oder 10% eine Kombination zu finden, die Ihren BCD zu erzeugen. Da es nur 10 Kombinationen verwendet statt alle 16 Sie einige Informationen verlieren.