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 !
Hallo, F.R schrieb: > Möchte jetzt gerne Das ist aber schön, dass du das möchtest. Was hast du denn bisher und woran hängt es aktuell? Grüße,
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
Dafür gibts Die Klasse Convert
1 | int toConvert = 5; |
2 | int base = 2; |
3 | string wert = Convert.ToString(toConvert ,base ); |
4 | // wert ="101"
|
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.
Ok, aber versehe ich nicht ganz :) Ich hab ja eine Ganzzahl vom typ unsigned int wie kann ich den da mit c# die Funktion anwenden und welche Bibliothek benötige ich dafür Danke für die Antwort !!
Genau danach suche ich also eine Art Algorithmus. 1000 dank dür die schnellen Antworten !!!
Dirk B. schrieb: > Dezimalzahl = Dezimalzahl / 0 Division durch 0 ??? Das wäre ein mathematisches Novum - bei C# ist sicher auch das möglich.
F.R schrieb: > Also in dem Fall 6 = 0110 > und 5 = 0101 > > zusammen also 0110 0101 nun wieder zurückgerechnet auf Dezimalsystem > bekomme ich 101 raus. 0x65=0110.0101 und 101 ist die dezimale Darstellung davon. Einfach hex nach dezimal umwandeln.
Zeno schrieb: > Dirk B. schrieb: >> Dezimalzahl = Dezimalzahl / 0 Dezimalzahl = Dezimalzahl / 10 Danke für den Hinweis
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...
F.R schrieb: > Hab versucht > den bisherigen Algorithmus "umzukehren", jedoch erfolglos... zeig mal deinen Versuch (oder brauchst du nur einen Dummen)
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.
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 !!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.