AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

umwandlung von dualzahlen zu dezimalzahlen

Ein Thema von nullahnung · begonnen am 26. Jun 2006 · letzter Beitrag vom 28. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
nullahnung

Registriert seit: 26. Jun 2006
2 Beiträge
 
#1

umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 10:22
wir sitzen schon länger an einem projekt wo wir dualz. in dezimalz. umwandeln sollen und wir haben keine ahnung wie das geht vielleicht hat jemand eine ahnung wie das geht?
es wäre schön wenn wir so schnell wie möglich hilfe bekommen.unser lehrer hat das nicht richtig erklärt und wir sollen das jetzt alleine machen denn er ist krank
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 10:28
Hi!

Villeicht habe ich in der Schule nicht aufgepasst?!

Was sind Dualz. 01010001 ??? Binär????

Frank
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#3

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 10:44
Wilkommen in der DP,

Ich gehe mal davon aus, dass die Dual-Zahl als String vorliegt:

Delphi-Quellcode:
uses Math

...

function BinToInt(const BinStr : String) : Integer;
var lk : Integer;
begin

  Result := 0;
  for lk := length(BinStr) downto 1 do begin
    if (BinStr[lk] = '1') then
      Result := Result + Round(Power(2, (length(BinStr) - lk)));
  end; // for lk

end; // BinToInt
Dieses kleine Code-Schnipsel durchläuft die Binäre Zahl von rechts nach links.
Wenn eine eins gefunden wird, wird das Ergebis um die passende Deziamlzahl erhöht.


Viele Grüße,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#4

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 10:45
Ja, Dualzahlen sind Binärzahlen.

Die Umwandlung ist eigentlich ganz einfach. Die erste Stelle von rechts steht für 2^0, die nächste für 2^1, dann für 2^2 usw.
Daher musst du nur überprüfen, ob an dieser Stelle eine 1 steht oder eine 0, dementsprechend addierst du das 2^x zum bereits errechneten.

Ich hab einfach mal eine kleine Funktion geschrieben, die das (glaube ich) richtig macht:

Delphi-Quellcode:
function DualnachDez(pDualZahl: String): Integer;
var i: integer;
begin
  result := 0;
  for i:=length(pDualZahl) downto 1 do
    if pDualZahl[i] = '1then
      result:=result+trunc(Power(2,length(pDualZahl)-i));
end;
edit: Hehe, etwas zu spät. Lustig, wie ähnlich die Funktionen sind.
Pszopp, Power gibt einen extended-Typ zurück, du musst also noch "trunc" hinzufügen.

edit2: Auf Hinweis von Pszopp geändert. Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 10:51
Viel einfacher!

Delphi-Quellcode:
  B := 0;
  For i:=1 to length(S) do
    begin
      B := B shl 1;
      if S[i] = '1then
        B := B or 1;
    end;
Grüsse Frank

PS.: Sehe schon alles keine ASM programmierer hier!
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#6

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 10:53
Zitat von TheAn00bis:
Pszopp, Power gibt einen extended-Typ zurück, du musst also noch "trunc" hinzufügen.
Hast Recht, schon korrigiert.
Dein Exponent in der Power-Funktion scheint falsch zu sein
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#7

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 11:40
Zitat von pszopp:
Dein Exponent in der Power-Funktion scheint falsch zu sein
Danke, geändert.

Zitat von Mavarik:
Viel einfacher!

Delphi-Quellcode:
  B := 0;
  For i:=1 to length(S) do
    begin
      B := B shl 1;
      if S[i] = '1then
        B := B or 1;
    end;
Das sieht interessant aus, aber verstehen tue ich es nicht. Würdest du das mal erklären?
Die Informationen der Hilfe über "shr" und "or" bringen mich nicht weiter.
  Mit Zitat antworten Zitat
morri

Registriert seit: 6. Jun 2006
Ort: Wuppertal
106 Beiträge
 
Delphi 7 Professional
 
#8

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 12:01
shl und shr und or bearbeiten eine integerzahl bitweise.

or fügt also beispielsweise der dez. zahl 3 (=11) ein einser bit hinzu. also: 111 (=dez. 7)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 12:09
Zitat von TheAn00bis:
Das sieht interessant aus, aber verstehen tue ich es nicht. Würdest du das mal erklären?
Die Informationen der Hilfe über "shr" und "or" bringen mich nicht weiter.
Ganz einfach...

Ein shl !!! nicht shr!!!

Ein shl ist ein binäres schieben der Bits nach links ohne CarryFlag und ohne Übertrag ins 0-te bit...

und bewirkt ein MUL 2.

Ein or 1 setzt einfach das 0-te bit auf 1. Somit wird, wenn im String eine 1 ist das Bit gesetzt und vor dem
nächsten setzen nach links geschoben... ggf. Müsste abgeprüft werden ob der String nicht länger als 8 für bytes
bzw. 16 für Words... Je nach Datentyp...

Ich würde sagen schneller geht es nicht... kein Trunc kein Powser ...

Grüsse Frank
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: umwandlung von dualzahlen zu dezimalzahlen

  Alt 26. Jun 2006, 12:12
Zitat von morri:
shl und shr und or bearbeiten eine integerzahl bitweise.

or fügt also beispielsweise der dez. zahl 3 (=11) ein einser bit hinzu. also: 111 (=dez. 7)
Nööö

X := 3;

X := X or 1;

X = 3;

Frank
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz