Unterschiede zwischen Bitfeldern
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
abweichen
abweichung
algorithmus
anzahl
beispiel
bit
diagramm
einzelnen bits
ergebnis
ersten bit
grund
jemand
liste
mathematischen tricks
performance
problem
schleife
schnellere idee
unterschied
vorkommen
-
Ich setze das jetzt einfach mal in das Sonstige Programmiersprachenforum, weil es nicht Sprachenspezifisch ist. Das Problem ist folgendes: Ich habe ein Bitfeld (Laenge im Grunde variabel) und eine Liste anderer Bitfelder. Aus dieser Liste will ich jetzt das Bitfeld rausfinden, welches dem ersten Bitfeld am aehnlichsten ist. Also bei dem am wenigstens Bits von dem ersten Bitfeld abweichen. Als Beispiel folgendes:
Bitfelder: 00000 und 00010 -> Abweichung ist 1
Bitfelder: 00000 und 00110 -> Abweichung ist 2
Bitfelder: 01001 und 10011 -> Abweichung ist 3
Ich will also eine relativ schnelle Moeglichkeit die Unterschiede zwischen zwei Bitfeldern rauszufinden. Man koennte das natuerlich machen, indem man beide Bitfelder jeweils verschiebt und das Endbit testet und vergleicht und die Unterschiede von den Endbits jeweils speichert. Hat jemand noch eine tollere (vielleicht schnellere? :) ) Idee dazu?
Ich bedanke mich schonmal im Vorraus :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich würde einfach in einer Schleife die einzelnen Bits durchgehen und vergleichen ob das jeweilge Bit vom \"Bitfeld1\" gleich mit dem ersten Bit von \"Bitfeld2\", wenn nicht i++; und so weiter bis alle Bits durch sind. i ist dann die Anzahl der Abweichungen.
(Sorry, aber ich kann Algorithmen nicht so gut ohne Diagramm erklären ;) ) -
Verknüpfe jeweils beide Felder mit XOR. Die Anzahl der 1er im Ergebnis entspricht der Anzahl der Unterschiede.
-
Erstmal danke fuer die Vorschlaege :). Aber fuer beide braeuchte ich immernoch eine Schleife um die jeweiligen Treffer zu zaehlen, was ich ja zu vermeiden versuchte. Die Bitfelder liegen uebrigens als Integer vor, wenn das helfen sollte. Ich suche also im Grunde eine Moeglichkeit die Zweierpotenzen zu zaehlen, die in einer Zahl vorkommen (so optimal wie moeglich, Grundidee waere natuerlich klar). Das hatte ich wohl ungeschickt ausgedrueckt. Das muss wahrscheinlich sehr oft durchgelaufen werden, so dass Performance sehr wichtig waere. Kann man das irgendwie mit mathematischen Tricks machen, oder muss ich da dann doch auf die simple iterative Variante zurueckgreifen? (Ich hoffe, dass das jetzt von mir nicht zu doof formuliert ist :) ).
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage