AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Umrechnen von Zahlensystemen

Ein Thema von JP29 · begonnen am 27. Aug 2011 · letzter Beitrag vom 1. Sep 2011
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#1

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 18:01
Binär in Dezimal ist IMHO einfacher als anders herum. Hier mal etwas Pseudo-Code:
Code:
i = Stringlänge
Zahl = 1
Ergebnis = 0
solange i > 0
  falls String[i]
    '0' oder '1': Ergebnis = Ergebnis + Zahl * AlsZahl(String[i])
    sonst: falsche Eingabe
  Zahl = Zahl * 2
  i = i - 1
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#2

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 18:08
sorry leute,
aber ich raff das einfach nicht...
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#3

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 18:24
also leute, ist ein noob fehler gewesen,
ich hab bei dem copy befehl was falsch verstanden(ich dachte man kopiert immer nur von position zu position, aber man kopiert ja ab position x Stellen),
jetzt klappt das auch.
Mit der schleife werd ich jetzt selber mal ein bisschen noch tüfteln.
Vielen dank an alle von euch für eure hilfe

mfg julian.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Umrechnen von Zahlensystemen

  Alt 28. Aug 2011, 19:56
Binär in Dezimal ist IMHO einfacher als anders herum. Hier mal etwas Pseudo-Code:
Code:
i = Stringlänge
Zahl = 1
Ergebnis = 0
solange i > 0
  falls String[i]
    '0' oder '1': Ergebnis = Ergebnis + Zahl * AlsZahl(String[i])
    sonst: falsche Eingabe
  Zahl = Zahl * 2
  i = i - 1
Kuck mal hier

Und btw, JP29, sry, habs überlesen xD

Deutlichere Erklärung zum Algorithmus:
Die binäre Zahl "101011" hat im dezimalen System den Wert 43.
So, wie kommt man nun von dem binären Wert zum Dezimalen?
Der von mir zuvor geposteter Algorithmus macht es, den ich nun mal speziell für dich per Hand ausführen werde:
Code:
binStr := "101011"
decVal := 0
binVal := 1
i := Länge von binStr = 6 = Startwert -> runter bis 1, wiederhole folgendes:
i = 6:
  wenn binStr[6] den Wert "1" hat:
    decVal (=0) := decVal (=0) + binVal (1) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 1
  binVal (=1) := binVal(=1) * 2 // daraus ergibt sich 2
i = 5:
  wenn binStr[5] den Wert "1" hat:
    decVal (=1) := decVal (=1) + binVal (2) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 3
  binVal (=2) := binVal(=2) * 2 // daraus ergibt sich 4
i = 4:
  wenn binStr[4] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (4)
  binVal (=4) := binVal(=4) * 2 // daraus ergibt sich 8
i = 3:
  wenn binStr[3] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (8) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 11
  binVal (=8) := binVal(=8) * 2 // daraus ergibt sich 16
i = 2:
  wenn binStr[2] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (16)
  binVal (=16) := binVal(=16) * 2 // daraus ergibt sich 32
i = 1:
  wenn binStr[1] den Wert "1" hat:
    decVal (=3) := decVal (=3) + binVal (32) // dies wird ausgeführt, da zuvorige Bedingung erfüllt -> decVal = 43
  binVal (=32) := binVal(=32) * 2 // daraus ergibt sich 64
decVal = 43
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (28. Aug 2011 um 19:59 Uhr)
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#5

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 15:57
hey leute, ich hab noch mal ne frage
ich hab jetzt eine schleifeentwickelt, die von binär in dezimal umrechnet, aber es kommt ein falsches ergebnis raus...könnt ihr mirhelfen
hier der quelltext:

Delphi-Quellcode:
if radiobutton4.checked=true then
 begin
  x:=(edit1.Text);
  n:=Length(x);
  e:=0;
  y:=n;
  summe:=0;
   for i:=1 to n do
    begin
     s1:=copy(x,y,1);
     j:=StrToFloat(s1);
     potenz:=power(j, e);
     summe:=potenz+summe;
     e:=e+1;
     y:=y-1;
    end;
  edit2.Text:=FloatToStr(summe);
end;
end;
mfg julian.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#6

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 16:40
Das sieht aber sehr umständlich aus. Geh doch den String von hinten nach vorn durch und erhöhe das Ergebnis um eine Zahl, die bei 1 beginnt und bei jedem Durchlauf verdoppelt wird. Das Copy kannst Du Dir übrigens sparen, da man einzelne Zeichen eines Strings direkt per Index ansprechen kann (1. Zeichen hat Index 1).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#7

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 17:06
mhh..ich geh doch den string von hinten nach vorne durch...aber dass mit dem verdoppeln und +1 addieren versteh ich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#8

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 17:16
Ich weiß nicht, was daran so schwer ist. Aber gut, dann mal ganz von vorn: angenommen, Du hast den String 00101010 und willst eine Zahl daraus machen. Dann nehmen wir zuerst den Wert des kleinsten Bits (=1) und vergleichen mit '1'
Code:
00101010
00000001 <-- 1
========
00000000

--> Ergebnis 0
Nun verdoppeln wir diesen Wert und vergleichen wieder
Code:
00101010
00000010 <-- 2
========
00000010

--> Ergebnis 2
Nächster Durchlauf:
Code:
00101010
00000100 <-- 4
========
00000010

--> Ergebnis 2
Usw. bis zur Stringposition 1.

Wenn also im String an der aktuellen Position '1' steht, dann wird der Wert, den das Bit an dieser Stelle hat, dazuaddiert. Am Ende sollte die Antwort auf die Frage nach dem Universum, dem Leben und einfach allem in diesem Beispiel herauskommen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#9

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 19:30
tut mir jetzt echt leid, aber ich versteh das jetzt nicht, also wir haben in der schule gelernt , dass man die zahl in potenzen zerlegen muss, also bei z.b 1010:
=0*2^0+1*2^1+0*2^2+1*2^3,
deswegen versteh ich nicht wie ihr das rein mathematisch löst
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Umrechnen von Zahlensystemen

  Alt 31. Aug 2011, 17:00
hey leute, ich hab noch mal ne frage
ich hab jetzt eine schleifeentwickelt, die von binär in dezimal umrechnet, aber es kommt ein falsches ergebnis raus...könnt ihr mirhelfen
Nie wieder!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz