Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   Algorithmushilfe bei Konvertierung Dual <=> Dezimal :) (https://www.tweakpc.de/forum/programmiersprachen/73762-algorithmushilfe-bei-konvertierung-dual-dezimal.html)

kanonenfutter 28.11.2009 14:53

Algorithmushilfe bei Konvertierung Dual <=> Dezimal :)
 
Hallo zusammen :)

Ich versuch grad zahlen zu konvertieren und scheiter immer wieder an Kleinigkeiten :rolleyes:

Also: Ich habe ein Feld mit 100 Stellen (0..99) welches gefüllt ist mit einer beliebigen Dualzahl (z.B. [0,0,0,...,0,1,1,0,1,0,0,1]). Nun möchte ich diese Zahl in einen dezimalen Integer Wert umwandeln.

Dazu übergebe ich in einer Zählschleife den aktuellen Wert des Feldes (1 oder 0) und die aktuelle Position im Feld (von rechts beginnend von 99..0) an meine Konvertierungsfunktion (DualToDez). iDez ist dabei die zu berechnende Dezimalzahl:
[quote]for(i=99; i>=0; i--)
{
iDez = iDez + DualToDez(iFeld1[i]->GetInhalt(), 99-i);
}[/quote]Ich übergebe also an eine Funktion den Inhalt des Feldes an der Stelle 99 bis 0, sowie den Wert 99-i (i = Anzahl der Stelle). So müsste ich also 2^0 + 2^1 usw bekommen.

Aber wie realisiere ich das jetzt in der besagten Funktion? Steh echt aufm Schlauch :( Wenn jmd. Pseudocode anbieten könnte wäre das echt klasse :)

mfg

POINT 28.11.2009 18:55

AW: Algorithmushilfe bei Konvertierung Dual <=> Dezimal :)
 
Wenn ich deine Frage richtig verstanden hab, vlt. sowas:

int DualToDez(int inhalt,int index)
{
return inhalt*(2^index);
}

Bitte nicht hauen wenns murks ist ^^

mfg
Point

kanonenfutter 28.11.2009 19:54

AW: Algorithmushilfe bei Konvertierung Dual <=> Dezimal :)
 
Jo danke :) So was ähnliches hab ich auch schon probiert, geht leider nich so einfach mit dem Exponent ;)

Habs mittlerweile raus:

Dual nach Dezimal:
[code]for (i=0; i<100; i++)
{
iDez = iDez*2 + iFeld1[i]->GetInhalt();
}
printf("Dualzahl 1 in Dezimal : %d", iDez);[/code]
Und das ganze auch wieder zurück:
[code]iDez = Integer.GibWert();
i = 99;
do
{
iRest = iDez % 2;
iDez = iDez / 2;

if( iRest != 0)
{
iFeldDD[i]->SetInhalt(1);
}
else
{
iFeldDD[i]->SetInhalt(0);
}

i--;
}
while(iDez > 0);

printf("Dezimalzahl nach Dual : ");
for(i=0; i<=99; i++)
{
printf("%d", iFeldDD[i]->GetInhalt());
}[/code]Trotzdem danke :)

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.