Als «bit-manipulation» getaggte Fragen

Die Manipulation einzelner Bits. Zu den verwendeten Operatoren können bitweise UND, ODER, XOR, NICHT, Linksverschiebung und Rechtsverschiebung gehören.


16
Best Practices für Circular Shift (Rotation) -Operationen in C ++
Links- und Rechtsverschiebungsoperatoren (<< und >>) sind in C ++ bereits verfügbar. Ich konnte jedoch nicht herausfinden, wie ich Kreisverschiebungs- oder Rotationsvorgänge ausführen konnte. Wie können Operationen wie "Nach links drehen" und "Nach rechts drehen" ausgeführt werden? Hier zweimal nach rechts drehen Initial --> 1000 0011 0100 0010 sollte führen …

3
Was ist CHAR_BIT?
Zitieren des Codes zum Berechnen des ganzzahligen Absolutwerts (abs) ohne Verzweigung von http://graphics.stanford.edu/~seander/bithacks.html : int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) …



7
C / C ++: Bitfeldreihenfolge und -ausrichtung erzwingen
Ich habe gelesen, dass die Reihenfolge der Bitfelder innerhalb einer Struktur plattformspezifisch ist. Was passiert, wenn ich verschiedene compilerspezifische Verpackungsoptionen verwende? Werden diese Garantiedaten in der richtigen Reihenfolge gespeichert, in der sie geschrieben wurden? Beispielsweise: struct Message { unsigned int version : 3; unsigned int type : 1; unsigned int …

10
Gibt es eine elegante und schnelle Möglichkeit, um zu testen, ob sich die 1-Bits in einer Ganzzahl in einem zusammenhängenden Bereich befinden?
Ich muss testen, ob die Positionen (von 0 bis 31 für eine 32-Bit-Ganzzahl) mit dem Bitwert 1 einen zusammenhängenden Bereich bilden. Zum Beispiel: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Ich möchte, dass dieser Test, dh eine Funktion has_contiguous_one_bits(int), portabel ist. Eine naheliegende Möglichkeit besteht darin, Positionen zu durchlaufen, um …




3
Inkrementieren von 'maskierten' Bitsets
Ich bin gerade dabei, einen Baum-Enumerator zu schreiben, bei dem ich auf folgendes Problem gestoßen bin: Ich betrachte maskierte Bitsets, dh Bitsets, bei denen die gesetzten Bits eine Teilmenge einer Maske sind, dh 0000101mit Maske 1010101. Was ich erreichen möchte, ist das Inkrementieren des Bitsets, jedoch nur in Bezug auf …

5
Bearbeiten Sie Alpha-Bytes der Java / Android-Farbe int
Wenn ich ein Int in Java habe, das ich als Android-Farbe verwende (zum Zeichnen auf einer Leinwand), wie kann ich nur die Alpha-Komponente dieses Int bearbeiten? Wie kann ich zum Beispiel eine Operation verwenden, um dies zu tun: int myOpaqueColor = 0xFFFFFF; float factor = 0; int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, …

7
Finden Sie effizient binäre Zeichenfolgen mit geringem Hamming-Abstand in großen Mengen
Problem: Bei einer großen (~ 100 Millionen) Liste von vorzeichenlosen 32-Bit-Ganzzahlen, einem vorzeichenlosen 32-Bit-Ganzzahl-Eingabewert und einer maximalen Hamming-Entfernung werden alle Listenelemente zurückgegeben, die innerhalb der angegebenen Hamming-Entfernung des Eingabewerts liegen. Die tatsächliche Datenstruktur zum Speichern der Liste ist offen, die Leistungsanforderungen schreiben eine In-Memory-Lösung vor, die Kosten für den Aufbau …

5
Setzen Sie ein bestimmtes Bit in Byte
Ich versuche, Bits in Java-Byte-Variablen zu setzen. Es bietet geeignete Methoden wie .setBit(i). Weiß jemand, wie ich das realisieren kann? Ich kann bitweise durch ein bestimmtes Byte iterieren: if( (my_byte & (1 << i)) == 0 ){ } Ich kann diese Position jedoch nicht auf 1 oder 0 setzen, oder?

20
Erklären Sie dieses Snippet, das maximal zwei Ganzzahlen findet, ohne if-else oder einen anderen Vergleichsoperator zu verwenden.
Finden Sie das Maximum von zwei Zahlen. Sie sollten if-else oder einen anderen Vergleichsoperator nicht verwenden. Ich habe diese Frage im Online-Bulletin Board gefunden, daher dachte ich, ich sollte sie in StackOverflow stellen BEISPIEL Eingabe: 5, 10 Ausgabe: 10 Ich habe diese Lösung gefunden. Kann mir jemand helfen, diese Codezeilen …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.