Ich habe eine Bitfolge, die basierend auf Benutzereingaben generiert wird. Ich habe auch eine andere Bit-Zeichenfolge, die ich verwenden, um bitweise & mit der generierten Bit-Zeichenfolge durchzuführen. Was ich gerne wissen würde, ist herauszufinden, wie viele Bits der generierten Bitfolge sich von der & Operation geändert haben. Sagen wir also, wenn ich 10000101 als generierten Bitstring und 00101111 als zweiten Bitstring verwende, verwende ich für & Operation. Die Ausgabe des Prozesses sollte 1 sein, da nur das erste Bit der generierten Bitfolge geändert wurde. Wie mache ich das?Ermittlung der Anzahl der Bits, die sich geändert haben (bitweiser Operator)
Antwort
Sie müssen das Ergebnis mit dem Original XOR, welche Bits zu identifizieren geändert wurden:
changedBits = (userInput & generatedInput)^userInput
Dann müssen Sie die Hamming Weight des changedBits
Wert berechnen:
int hammingWeight(int i) {
i = i - ((i >>> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
return (((i + (i >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;
}
int numberOfChangedBits = hammingWeight(changedBits);
Passen Sie je nach Bedarf an, wie viele Bits Ihre Eingaben sind.
Java hat eine nette Integer.bitCount, die meisten anderen Sprachen sind nicht so nett. – harold
Awesome! Das ist die Antwort, nach der ich suche. – user3273345
@harold: Danke für den Tipp! – user3273345
Was Sie suchen ist bitweise XOR (exklusiv ODER) oder a^b
:
10000101^00101111 → 10101010
ist logisch äquivalent zu (~a&b) | (a&~b)
- 1. Erklärung der bitweiser NOT-Operator
- 2. Bitweiser Operator in SQLAlchemy
- 3. Ermittlung der Anzahl der Prozessoren für die Verwendung von Openmpi
- 4. Anzahl der Benutzer, die sich am letzten Tag angemeldet haben
- 5. Was ist der Datentyp zum Speichern benutzerdefinierter bitweiser Operator
- 6. Ermittlung der Anzahl der Parameter in einem Lambda
- 7. x86 - Anzahl der Register vs Anzahl der reservierten Bits
- 8. Ist die Anzahl der Bits in einem Byte gleich der Anzahl der Bits in einem Typ-Zeichen?
- 9. Anzahl der Bits in Javascript-Nummern
- 10. Anzahl der Gesamtzeilen, die Duplikate haben
- 11. Warum ist es nützlich, die Anzahl der Bits zu zählen?
- 12. Berechnen der Anzahl der Bits und der Anzahl der Wörter BigInteger
- 13. files.list Verhalten scheint sich geändert zu haben
- 14. Überprüfen Sie, ob sich Webformularwerte geändert haben
- 15. Berechnung der Anzahl der in Byte gesetzt Bits
- 16. Haben sich Scala-Fallklassenanmerkungen in 2.10 geändert?
- 17. git denkt Dateien haben sich geändert
- 18. Kann der überladene Operator löschen Standardparameter haben?
- 19. OnBeforeUnload wird nur aktiviert, wenn sich die Feldwerte geändert haben
- 20. Ermittlung der Worst-Case-Komplexität eines Algorithmus
- 21. Wie kann ich nur Dateien bearbeiten, die sich geändert haben?
- 22. Programmatische Ermittlung der Ursache für IOException?
- 23. Suche n Anzahl der Bits in eine Datei (C++)
- 24. programmatisch ersetzen SELECT-Felder in SQL-Abfrage zur Ermittlung der Anzahl der Ergebnisse
- 25. C++ - Anzahl der Bits pro Pixel aus BMP-Datei lesen
- 26. Anzahl der gesetzten Bits in einem Char bestimmen
- 27. Valueerror: Kann nicht haben Anzahl der Faltungen n_folds = 3 größer als die Anzahl der Proben: 2
- 28. Erhöht sich die Anzahl der Methoden, wenn zwei Module in ihren Gradle-Dateien dieselben Abhängigkeiten haben?
- 29. C# NOT (~) bitweiser Operator gibt negative Werte zurück
- 30. Berechnung der Bits benötigt
Es sollte einfach sein, einfach über die Bits der generierten Bit-String zu schleifen und mit dem Original zu vergleichen, nein? –