![]() |
Differenz zwischen Bytes mit Bit-Operatoren
Sicher eine sehr einfache Frage - aber ich kriege es gerade nicht hin :oops:
Ich möchte abs(z1-z2) durch Addition mit Bit-Operatoren bestimmen. function AbsDifferenz(z1, z2: byte): byte; begin result := z1 + not z2 + 1; end; Das funktioniert, solange z1 > z2 ist, aber nicht umgekehrt. Irgendwie erinnere ich mich, dass es eine xor-Formel dazu gab, aber ich finde die nicht... Wer hilft mir auf die Sprünge? |
AW: Differenz zwischen Bytes mit Bit-Operatoren
|
AW: Differenz zwischen Bytes mit Bit-Operatoren
Danke für das Link, aber das hilft nicht wirklich. Was xor macht weiß ich schon, nur nicht wie ich es zur 'additiven Subtraktion' nutzen kann ;)
|
AW: Differenz zwischen Bytes mit Bit-Operatoren
dif := z1 xor z2
Ist es nicht das was Du anstrebst? Grüße Klaus |
AW: Differenz zwischen Bytes mit Bit-Operatoren
Nee, ich möchte tatsächlich abs(z1-z2) = abs(z2-z1) bestimmen.
Mit meiner obigen Formel result := z1 + not z2 + 1 bekomme ich das richtige Ergebnis, wenn z1 > z2 ist Z.B.: 7 - 3 => 7 + 252 + 1 => 260 Da in einem Byte das 256er (als 9.) Bit entfällt, bleibt Rest = 4. Bei 3 - 7 => 3 + 248 + 1 => bleiben 252 als Rest ... Irgendwas ist da also falsch, und ich meine mich schwach zu erinnern, dass es mit xor gehen müsste, finde aber die Formel nicht. Immerhin ist: not z1 = z1 xor 255 Lieben Gruß! |
AW: Differenz zwischen Bytes mit Bit-Operatoren
Zitat:
Vorzeichenwechsel im Restklassenring ![]() |
AW: Differenz zwischen Bytes mit Bit-Operatoren
Hallo Michael,
vielen Dank für den Hinweis! Vorzeichenerweiterung scheint da nötig - mal sehen, ob ich das hinbekomme. Ich brauche ja nicht alle Fälle aus dem Artikel zu berücksichtigen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz