Modulo Ergebniss

Gast #468234
Lesenswert?
• ▲
▼
Hallo, ich habe ein Problem mit einem Modulo vergleicher. Ich lese aus 
einem FAT Dateisystem Cluster informationen rein zB. (0x0003) mit diesem 
"vergleicher"

while(( Cluster_Location_Address % 512) != 0)
{
    Address_Overflow++;
    Cluster_Location_Address--;
}

Das geht gut und recht bis zu 0x0080, am Anfang multipliziere ich den 
Wert noch mals 2, also 0x0100...Dann gibt es Probleme.. Kann es sein 
das, das Modulo Ergebnis nur 8bit ist? Der höchste Wert den der Modulo 
"vergleicher" rechnen musst ist logischer weise 511 bzw. 510.. Wie kann 
ich dieses Problem umgehen? Es wäre sehr ärgerlich wenn modulo nur bis 
8bit geht...

Grüsse
#468250
Lesenswert?
• ▲
▼
Zu deinen Moduloproblem direkt kann ich dir nichts sagen, aber einen 
Tipp am Rande hab' ich: Modulo-Operationen mit Zweierpotenzen gehen sehr 
schön mit bitweisem "und":
x%(2^n)=x&(2^n-1)

x % 512 = x & 511

Beispiel:
7%4=3 bzw.:
7=111.b
4-1=3=11.b
7&3=111.b & 11.b=11.b=3

Bitweise Operationen sollte der Compiler ja mit mehr als 8 Bit machen 
können und diese Variante ist sogar noch einiges schneller (war 
zumindest bei mir auf nem XScale so: 
http://www.pocketmatrix.com/forums/viewtopic.php?t=15995&highlight= )

Beste Grüße,
Bartl

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.