Forum: Mikrocontroller und Digitale Elektronik negative BCD-Zahlen


von christoph (Gast)


Lesenswert?

Hi,
kann mir jemand von Euch erklären wie eine negative BCD-Zahl aussieht!?
bei binär-zahlen gibt es ja die Möglichkeit das höchste Bit zu setzen 
oder das Komplement der Zahl zu berechnen - beides ist Möglich.

Bei der BCD-Zahl ergibt für mich das bilden des 2er-Komplements keinen 
Sinn da aus den Zahlen 0-5 nachher a-f wird, und dann wäre es ja keine 
BCD- sondern eine binär Zahl!? - daher gehe ich davon aus, dass bei 
negativen BCD-Zahlen nur das MSB gesetzt wird, richtig?

von Walter S. (waldo)


Lesenswert?

Hallo,
bei Siemens Step7 wird die Zahl um eine Stelle erweitert. Ist diese 
Stelle 0 ist die Zahl positiv ist diese Stelle=8 ist die Zahl negativ.

Es wird also Vorzeichen und Betrag dargestellt.

http://www.sps-lehrgang.de/bcd-code/

Gruß

von 6632 (Gast)


Lesenswert?

Eine BCD Zahl ist keine Zahl in dem Sinne, sondern nur die Darstellung 
einer Ziffer.

von christoph (Gast)


Lesenswert?

dass es nur die Darstellung einer Ziffer ist weiß ich - nur war eben 
nicht klar wie ich neg. Ziffern ausdrücke!

Danke @ Walter Selg
das war's was ich gesucht habe!

von Peter D. (peda)


Lesenswert?

Wenn Du packet-BCD meinst, dann geht das nicht.
Du bräuchtest 20 Codes, ein Nibble hat aber nur 16.
Du mußt also ein extra Bit dafür reservieren.

Aber packet-BCD hat keinerlei praktische Bedeutung mehr, kannst also tun 
und lassen damit, was Du willst.


Zahlen werden üblicher Weise binär (8, 16, 32 oder 64 Bit) bzw. als 
float (32, 64 oder 80 Bit) dargestellt.

Binär stellt man negative Zahlen immer als 2-er Komplement dar, damit 
Addition, Subtraktion und Multiplikation direkt ausgeführt werden 
können.

Nur die Division benötigt eine extra Vorzeichenbetrachtung.
Die Multiplikation benötigt nur dann eine Vorzeichenbetrachtung, wenn 
die doppelte Breite des Produkts genutzt wird.


Peter

von Jens (Gast)


Lesenswert?

Hi Leute,
ich muß mich im Rahmen eines Projektes genauer mit dem Rechen im 
BCD-Code befassen. Frage kann mir jmd einen Tipp bspw. gutes Buch oder 
einen Link empfehlen.

Danke.

von OliverSo (Gast)


Lesenswert?

www.google.de ist ganz hilfreich.
oder das hier:
http://www.coberweis.de/DV-Einfuehrung.doc

Da BCD eigentlich nur die Nibble- oder byteweise Darstellung von 
Dezimalziffern ist, ist z.B. die Addition damit nichts anderes als eine 
normale dezimale Addition. Wenn ein Überlauf auftritt (von 9 nach 10), 
gibts halt einen Übertrag in die nächste Stelle. Eine 
allgemeinverbindliche Definition von Vorzeichen, Kommas, usw. gibt es 
auch nicht, was das Rechnen nochmal vereinfacht :-)

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Jens wrote:
> Hi Leute,
> ich muß mich im Rahmen eines Projektes genauer mit dem Rechen im
> BCD-Code befassen. Frage kann mir jmd einen Tipp bspw. gutes Buch oder
> einen Link empfehlen.
>

Das lustige daran ist, dass du im Grunde schon dein ganzes Leben
lang in BCD rechnest :-) (OK, nicht dein ganzes Leben lang,
sondern erst seitdem du in die Grundschule gekommen bist)

Ein Byte hat 8 Bit. Das kann man in 2 Teile mit jeweils 4 Bit
unterteilen, den sog. Nibbles. Jedes Nibble kann 16 Zustände
annehmen. Davon werden aber nur 10 Zustände für die Ziffern
0 bis 9 benutzt.
In einem Byte wird also so gezählt

BCD               binäre Repräsentierung
00                 00000000
01                 00000001
02                 00000010
03                 00000011
04                 00000100
05                 00000101
06                 00000110
07                 00000111
08                 00001000
09                 00001001
10                 00010000
11                 00010001
12                 00010010
......
43                 01000011
44                 01000100
45                 01000101
....
97                 10010111
98                 10011000
99                 10011001

Ende. Mehr geht mit einem Byte nicht.

Jedes Nibble repräsentiert also eine Ziffer von 0 bis 9.
Mit einem Byte kann man also im Grunde das machen, was in
der Grundschule 'Rechnen im Zahlenraum bis 100' heist.
Rechnen mit größeren Zahlen funktioniert genau gleich,
so wie du es in der Grundschule mit Papier und Bleistift
gelernt hast.

Das ist im Grunde schon so ziemlich alles, was man über BCD
wissen muss, um damit was machen zu können.
Für negative Zahlen muss man sich noch was ausdenken. Am einfachsten
ist es, das Äquivalent zum binären 2-er Komplement zu benutzen:
Alle Zahlen größer als zb. 49 sind negative Zahlen, wobei die
99 einer -1 entspricht. -5 + 8 = 3 wird dann zu 95 + 8 = (1)03

von He Ro (Gast)


Lesenswert?

> dass es nur die Darstellung einer Ziffer ist weiß ich - nur war eben
> nicht klar wie ich neg. Ziffern ausdrücke!

Was soll denn eine negative Ziffer überhaupt sein? Das ergibt doch 
keinen Sinn.

Eine negative Zahl ist ein Vorzeichen "-" mit beliebig vielen Ziffern. 
Eine positive Zahl ist ein Vorzeichen "+" mit beliebig vielen Ziffern. 
Die Ziffern sind aber immer die gleichen...

MfG, Heiko

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.