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!
differenz = ((Zeiger1 + 256) - Zeiger2) & 255 Je nachdem, wie das einsetzt musst du zeiger1 und Zeiger2 austauschen.
> differenz = ((Zeiger1 + 256) - Zeiger2) & 255
... und die +256 kannst du weglassen, da das Ergebnis eh auf 8 Bit
begrenzt wird. Also
1 | differenz = (Zeiger1 - Zeiger2) & 255 |
differenz = (Zeiger1 - Zeiger2) & 255 Das & ist doch Unsinn.. das ändert nix am Ergebnis... XXXXXXXX &11111111 --------- XXXXXXXX Weil 1 & 1 = 1 0 & 1 = 0 Also x & 1 = X Also ändert ein & mit 1 nix am Erbenis...
@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.
Ist index1 und index2 ein char-Wert bleibt nur noch differenz = index1-index2 übrig
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.