C# Dezimal Zahlen und BCD Zahlen

Gast #6109599
Lesenswert?

Hallo,

Habe da mal eine kleine Frage:

Wenn ih eine Dezimalzahl z.B.: 65 habe dan würde ja die BCD Zahl davon 
101 sein (0110 0101).

Möchte jetzt gerne durch einen Algorithmus von den 65 auf die 101 
rechnerisch kommen um dies später auszugeben.

Sollte natürlich auch mit anderen beliebigen Werten funktionieren.

Programmiersprache is übrigen C#


Danke im voraus !
Gast #6109680
Lesenswert?

Hmm nicht wirklich viel...  :/

Mir is klar, dass die 65 in 6 und 5 zerlegt werden und dann anschließen 
von jeder Zahl die Binärdarstellung berechnet wird.

Also in dem Fall 6 = 0110
und 5 = 0101

zusammen also 0110 0101 nun wieder zurückgerechnet auf Dezimalsystem 
bekomme ich 101 raus.

suche aber eher nach einer Mathematischen Methode mit der ich von der 65 
direkt auf die 101 rechnen kann.

MFG
#6109793
Lesenswert?

F.R schrieb:
> suche aber eher nach einer Mathematischen Methode mit der ich von der 65
> direkt auf die 101 rechnen kann.

Eine Formel gibt es da nicht.
Aber einen Algorithmus.

Stelle =1, BCD=0
solange Dezimalzahl > 0
  Ziffer = Dezimalzahl % 10
  Dezimalzahl = Dezimalzahl / 0
  BCD = BCD + Ziffer  * Stelle
  Stelle = Stelle * 16

Für zwei Stellen kannst du das auch direkt hin schreiben.
Gast #6110409
Lesenswert?

Dirk B. schrieb:
> Eine Formel gibt es da nicht.
> Aber einen Algorithmus.
>
> Stelle =1, BCD=0
> solange Dezimalzahl > 0
>   Ziffer = Dezimalzahl % 10
>   Dezimalzahl = Dezimalzahl / 0
>   BCD = BCD + Ziffer  * Stelle
>   Stelle = Stelle * 16
>
> Für zwei Stellen kannst du das auch direkt hin schreiben.


Wie bist du auf diese Form des Algorithmus gekommen?

Versuche gerade auch noch einen Rückrechnungsalgorithmus zu erstellen.

der soll mir dann von den 101 auf die 65 zurück rechnen. Hab versucht 
den bisherigen Algorithmus "umzukehren", jedoch erfolglos...
#6110439
Lesenswert?

F.R schrieb:
> Wie bist du auf diese Form des Algorithmus gekommen?

Dezimalzahlen haben die Basis 10
BCD Ziffern belegen 4 Bit. Daher kommt die 16.

Und es sind Stellenwertsysteme, die Position innerhalb der Zahl legt den 
Wert fest.

Bei der Zerlegung einer Zahl in Ziffern geht man halt so vor:
1
   Ziffer = Zahl % Basis   /* Ganz rechte Ziffer ermitteln mit Modulo */
2
   Zahl   = Zahl / Basis   /* Rest nach rechts verschieben */

Das andere ist das zusammenbasteln der neuen Darstellung.
1
   Zahl   = Zahl +  Ziffer * Wertigkeit

Die Wertigkeit der linken Ziffer kennt man aber erst, wenn man die 
rechte Stelle gefunden hat. Darum die Zerlegung von rechts (dort ist die 
1er Stelle).

Bei 4 Bit kann man eigentlich auch prima Bitoperationen (UND, ODER, 
SHIFT) anwenden.
Gast #6110500
Lesenswert?

Walter S. schrieb:
>(oder brauchst du nur einen Dummen)

Genau deswegen habe ich auch nicht nach einem fertigen Code gefragt 
sonder nach der Funktion bzw der Herkunft solcher Algorithmen.



Dirk B. schrieb:
> Bei 4 Bit kann man eigentlich auch prima Bitoperationen (UND, ODER,
> SHIFT) anwenden.


Genau das hat mir geholfen!
Super erklär, wie die Funktionalität bzw der Grundgedanke dahinter ist!!

Jetzt hats auch bei mir geklappt :)

Danke fürs schnelle Antworten !!

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