negative BCD-Zahlen

Gast #759788
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?
#759855
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
Gast #772009
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
#772015
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
Gast #772391
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren