Zahlen Differnez bestimmtn

Gast #596917
Lesenswert?
• ▲
▼
Hallo, hab damal folgende Frage: Ich habe mir einen speicher 
porogrmmiert und auf diesem Speicher zeigen 2 Pfeile! Ich muss halt 
jetzt nur die IF Anweisung wissen, dsa wenn sich Pfeil 1 Pfeil 2 nähert! 
Da der Speicher 255 Zeichen Platz hat kann der zeiger auch über die 255 
kommen und wieder bei 0 anfange. Ich bräuchte also eine IF-Anweisung die 
sagt wenn die Difference zwischen Zeiger 1 und 2 zu klein wird soll er 
das und das machen!
Gast #597175
Lesenswert?
• ▲
▼
@yalu
Das stimmt nicht was du schreibst. Rechne nochmal alle möglichkeiten 
durch.

Eins solle ich aber ergänzen, mit Zeiger ist nicht der Zeiger gemeint 
sondern eher der Index im Array[256].

also : differenz=((index1 + 256) - index2) & 255

ich bin davon augegangen, dass index1 und index2 Int-Werte sind, also 
kein char.
Gast #602717
Lesenswert?
• ▲
▼
Etwas spät, aber:

@Läubi:

Ich bin wie Martin davon ausgegangen, dass alle beteiligten Variablen
(Zeiger1, Zeiger2 und differenz) vom Typ int sind (wie bei Indizes
üblich). Deswegen hat das & 255 schon eine Bedeutung.

Du hast aber recht, wenn differenz ein unsigned char und 8 Bit breit
ist. Dann kann man das & 255 weglassen.

Aus Portabilitätsgründen würde ich aber auch in diesem Fall dazu
tendieren, die das & 255 beizubehalten. Stören tut's nicht und mit
etwas Glück wird es in den Fällen, wo es nicht benötigt wird,
wegoptimiert.

@Martin:

> Das stimmt nicht was du schreibst. Rechne nochmal alle möglichkeiten
> durch.

Habe ich, die beiden Ausdrücke

  differenz = ((Zeiger1 + 256) - Zeiger2) & 255

und

  differenz = (Zeiger1 - Zeiger2) & 255

liefern für alle Zeiger1 und Zeiger2 aus [0, 255] das gleiche
Ergebnis. Oder reden wir vielleicht irgendwo aneinander vorbei?

> Ist index1 und index2 ein char-Wert bleibt nur noch
> differenz = index1-index2
> übrig

Stimmt, aber unsigned char passt besser, da dann auch Differenzen >127
als positive Zahlen repräsentiert werden.

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.