AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Arrays gezielt über Grenzen hinaus beschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Arrays gezielt über Grenzen hinaus beschreiben

Ein Thema von Elko · begonnen am 2. Okt 2008 · letzter Beitrag vom 2. Okt 2008
Antwort Antwort
Seite 2 von 2     12   
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Arrays gezielt über Grenzen hinaus beschreiben

  Alt 2. Okt 2008, 22:31
@Dax: Mit dem -1 hast du natürlich recht. Aber deine Lösung ist auch etwas komisch:
(1 << (n + 1)) ^ 1 = 10000 ^ 1 = 10001
Eigentlich müsste es also -2 sein, um aus 10000 1110 zu machen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#12

Re: Arrays gezielt über Grenzen hinaus beschreiben

  Alt 2. Okt 2008, 22:31
Zitat von markusj:
Im übrigen müsstest du "einfach" nur hallo[stelle>>3] |= (a << (stelle++)%8) zuweisen, wenn ich dein Problem richtig verstanden habe.
Ersterer Teil greift auf das Element "stelle mod 8" zu, zweiterer schiebt das Bit dann zum Rest.
Das wäre zwar möglich, aber da Divisionen viele Zyklen kosten (und davon ne Menge), wäre dort eher ein & 7 angebracht. Allerdings wird dabei der Speicher auf Bytes heruntergebrochen statt auf machine words, was wieder zu Geschwindigkeitsverluste führt... Der Weg über (unsigned) longs und etwas Vertrauen in die CF-Unit des Compilers dürften da schon mehr wirken
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#13

Re: Arrays gezielt über Grenzen hinaus beschreiben

  Alt 2. Okt 2008, 22:32
Zitat von Apollonius:
@Dax: Mit dem -1 hast du natürlich recht. Aber deine Lösung ist auch etwas komisch:
(1 << (n + 1)) ^ 1 = 10000 ^ 1 = 10001
Eigentlich müsste es also -2 sein, um aus 10000 1110 zu machen.
Oha, ups, Tatsache *g* Dann hattest du natürlich Recht, und ich hab ein -1 unter den Tisch fallen lassen. Entschuldige
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#14

Re: Arrays gezielt über Grenzen hinaus beschreiben

  Alt 2. Okt 2008, 22:55
Zitat von Dax:
Zitat von markusj:
Im übrigen müsstest du "einfach" nur hallo[stelle>>3] |= (a << (stelle++)%8) zuweisen, wenn ich dein Problem richtig verstanden habe.
Ersterer Teil greift auf das Element "stelle mod 8" zu, zweiterer schiebt das Bit dann zum Rest.
Das wäre zwar möglich, aber da Divisionen viele Zyklen kosten (und davon ne Menge), wäre dort eher ein & 7 angebracht. Allerdings wird dabei der Speicher auf Bytes heruntergebrochen statt auf machine words, was wieder zu Geschwindigkeitsverluste führt... Der Weg über (unsigned) longs und etwas Vertrauen in die CF-Unit des Compilers dürften da schon mehr wirken
Ich programmiere C nur auf Atmel AVRs, daher die Denkweise ... bei nem 8-Bit RISC ist ein Byte das machine word

mfG
Markus
Markus
  Mit Zitat antworten Zitat
Elko

Registriert seit: 2. Feb 2008
52 Beiträge
 
Delphi 7 Personal
 
#15

Re: Arrays gezielt über Grenzen hinaus beschreiben

  Alt 2. Okt 2008, 23:16
Suuuuper! Danke an euch alle!!!
Jetzt funzts
@markusj: Ich hab erstmal ne Weile rumgerätselt, was du geschrieben hast, aber letztendlich ists ja mal wirklich ne super einfache Lösung, ohne dass ich andere Datentypen benutzen muss DANKE!

@Dax: Stimmt, das mit dem &7 ist sozusagen noch das i-Tüpfelchen für die Lösung

Also hier nochmal der "fertige" Code, falls jemand in 20 Jahren das gleiche braucht
Code:
unsigned char hallo[8],i,stelle=0,a=0;
for(i=0;i<8;i++)hallo[i]=0;
for(i=0;i<64;i++){
  hallo[stelle>>3] |= (a << ((stelle++)&7));
  a=1;
}
Gute Nacht allerseits!
Elko
Keyboard not found. Press any key to continue.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:39 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