Autor Beitrag
bti7a1337
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 04.07.09 01:47 
Hi Leute,
schreibe selber zum ersten mal was bei euch und hoffe ich habe die richtige rubrik erwischt^^
habe bis auf die basics leider nicht viel ahnung von delphi,
muss allerdings einen code umschreiben der ursprünglich in delphi geschrieben ist was bis jezt auch gans gut funktioniert,
allerdings bräuchte ich mal hilfe bei folgender zeile:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
for I := 14 downto 0 do
begin
    Value := (V1 shl 8or DP2[I];
end;


Value und V1 sind Integer (i selbstverständlich auch)
DP2 ist ein IntegerArray

Meine Frage bezieht sich jezt darauf was genau hier passiert. (vor allem das "or" stört mich)
Es würde mir sehr helfen wenn jemand zahlen für die variablen einsetzen könnte und einmal 2 schleifendurchgänge simuliert

(Die Schleife ist im original auch länger aber sonst ohne verständnissprobleme)

Sry falls das irgendwas total einfaches ist aber konnte mir absolut keinen reim drauf machen nach was ich da suchen sollte ;)


Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler verschoben am Sa 04.07.2009 um 02:00
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 04.07.09 02:06 
Moin und :welcome: im Forum!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for I := 14 downto 0 do // I nimmt nacheinander die Werte 14 bis 0 an -> 15 Durchläufe
  Value := (V1 shl 8or DP2[I];
// shl = shift left -> shl 8 -> Integer um 8 Bits nach links schieben (z.B. in PHP: Value = V1 << 8)
// or = (hier) binäres ODER (z.B. in PHP: a | b)
// eckige Klammern sind für einen indizierten Zugriff da (Array), ist in anderen Sprachen auch so
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
bti7a1337 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 04.07.09 02:31 
hey narses, schonmal dickes thx für die schnelle antwort ;)

größtenteils auch alles einleuchtend,
allerdings versteh ich die bedeutung vom or an der stelle nicht

er kann sich ja nicht random aussuchen welchen wert er jezt value zuweist.
muss ja ein kriterium geben nachdem er die linke oder rechte seite nimmt...
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Sa 04.07.09 02:37 
Der Inhalt der linken Seite wird Or-verknüpft mit dem Inhalt der rechten Seite, also

(V1 shl 8) das Ergebnis davon wird Or-verknüpft mit DP2[I].

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
bti7a1337 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 04.07.09 02:58 
es wird also aus beiden ein binärstream erstellt und die werden dann miteinander verknüpft

also rein fürs verständniss würde folgende konstellation richtig sein?!

V1..... = 25 = 11001
DP2... = 21 = 10101
Value = 29 = 11101

dann wär ich schon glücklich^^
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 04.07.09 08:31 
Also für mich sieht das richtig aus!
Ich bin auf dem Gebiet aber auch noch nicht so bewandert...
Das hieße ja aber, wenn Du dann dort noch irgendwo in Deinem Array DP2 eine 2 (also binäre 10) hättest, dass Du damit auf den mit 5 Binärstellen höchtsen erreichbaren Wert, also
Value = 31 = 11111 kämst.
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Sa 04.07.09 11:24 
user profile iconbti7a1337 hat folgendes geschrieben Zum zitierten Posting springen:
es wird also aus beiden ein binärstream erstellt und die werden dann miteinander verknüpft

also rein fürs verständniss würde folgende konstellation richtig sein?!

V1..... = 25 = 11001
DP2... = 21 = 10101


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
for I := 14 downto 0 do
begin
    Value := (V1       {0000000011001}
              shl 8)   {1100100000000} 
            or DP2[I]; {0000000010101}
             {Value}   {1100100010101}
end;


Gruss Reinhard
bti7a1337 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 04.07.09 21:15 
Dangeschööön, dann bin ich zufrieden ;)