Pytania otagowane jako bit-manipulation

Manipulacja pojedynczymi bitami. Użyte operatory mogą obejmować bitowe AND, OR, XOR, NOT, left-shift i right-shift.




3
Co to jest CHAR_BIT?
Cytując kod do obliczenia całkowitej wartości bezwzględnej (abs) bez rozgałęziania z 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 ++: Wymuś kolejność i wyrównanie pola bitowego
Czytałem, że kolejność pól bitowych w strukturze zależy od platformy. A jeśli użyję różnych opcji pakowania specyficznych dla kompilatora, czy ta gwarancja będzie przechowywana we właściwej kolejności, w jakiej są zapisywane? Na przykład: struct Message { unsigned int version : 3; unsigned int type : 1; unsigned int id : …


10
Czy istnieje elegancki i szybki sposób sprawdzenia, czy 1-bity w liczbie całkowitej znajdują się w ciągłym regionie?
Muszę sprawdzić, czy pozycje (od 0 do 31 dla 32-bitowej liczby całkowitej) z wartością bitu 1 tworzą ciągły region. Na przykład: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Chcę, aby ten test, czyli jakaś funkcja has_contiguous_one_bits(int), był przenośny. Jednym z oczywistych sposobów jest zapętlenie pozycji w celu znalezienia pierwszego ustawionego …




5
Manipuluj bajtami alfa koloru Java / Android int
Jeśli mam int w Javie, którego używam jako koloru Androida (do rysowania na kanwie), jak mogę manipulować tylko składnikiem alfa tego int? Na przykład, jak mogę użyć operacji, aby to zrobić: int myOpaqueColor = 0xFFFFFF; float factor = 0; int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor); //myTransparentColor should now = 0x00FFFFFF; W …

3
Zwiększanie „zamaskowanych” zbiorów bitów
Obecnie jestem w trakcie pisania modułu wyliczającego drzewa, w którym napotkałem następujący problem: Patrzę na zamaskowane bitsety, czyli bity, w których ustawione bity są podzbiorem maski, czyli 0000101z maską 1010101. Chcę tylko zwiększyć zestaw bitów, ale tylko w odniesieniu do bitów maskowanych. W tym przykładzie wynikiem będzie 0010000. Aby było …

7
Skutecznie znajdź ciągi binarne z małą odległością Hamminga w dużym zestawie
Problem: Biorąc pod uwagę dużą (~ 100 milionów) listę 32-bitowych liczb całkowitych bez znaku, 32-bitową wartość wejściową liczby całkowitej bez znaku i maksymalną odległość Hamminga , zwraca wszystkie elementy listy, które znajdują się w określonej odległości Hamminga wartości wejściowej. Rzeczywista struktura danych do przechowywania listy jest otwarta, wymagania dotyczące wydajności …

8
Odejmowanie spakowanych 8-bitowych liczb całkowitych w 64-bitowej liczbie całkowitej przez 1 równolegle, SWAR bez sprzętowej karty SIMD
Jeśli mam 64-bitową liczbę całkowitą, którą interpretuję jako tablicę spakowanych 8-bitowych liczb całkowitych z 8 elementami. Muszę odjąć stałą 1od każdej spakowanej liczby całkowitej podczas obsługi przelewu bez wpływu jednego elementu na wynik innego elementu. Mam ten kod w tej chwili i działa, ale potrzebuję rozwiązania, które odejmuje każdą zapakowaną …
77 c++  c  bit-manipulation  simd  swar 

6
(x | y) - y dlaczego nie może to być po prostu x lub nawet `x | 0`
Czytałem kod jądra i w jednym miejscu zobaczyłem wyrażenie w środku if instrukcji, takie jak if (value == (SPINLOCK_SHARED | 1) - 1) { ............ } gdzie SPINLOCK_SHARED = 0x80000000 jest predefiniowaną stałą. Zastanawiam się, dlaczego potrzebujemy (SPINLOCK_SHARED | 1) - 1 - do konwersji typu? wynikiem wyrażenia byłoby 80000000 …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.