Operatory przesunięcia w lewo i w prawo (<< i >>) są już dostępne w C ++. Jednak nie mogłem dowiedzieć się, jak mogę wykonywać operacje przesuwania okrężnego lub obracania. Jak można wykonywać operacje takie jak „Obróć w lewo” i „Obróć w prawo”? Obracanie w prawo dwukrotnie tutaj Initial --> 1000 …
Potrzebuję takiej funkcji: // return true iff 'n' is a power of 2, e.g. // is_power_of_2(16) => true is_power_of_2(3) => false bool is_power_of_2(int n); Czy ktoś może podpowiedzieć, jak mógłbym to napisać? Czy możesz mi podać dobrą stronę internetową, na której można znaleźć tego rodzaju algorytm?
Natknąłem się na (pozornie) bardzo dziwny przypadek. Weź liczbę 2 ( 0b10) i zamaskuj ją za pomocą 1 ( 0b01) Powinno to dać 0b00odpowiednik 0. Jednak tutaj pojawia się pan Schrödinger: var_dump(0b10 & 0b01); // int(0) var_dump(0b10 & 0b01 == 0); // int(0) var_dump(0b10 & 0b01 != 0); // int(0) …
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) ^ …
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 : …
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 …
Czy kiedykolwiek musiałeś używać przesunięcia bitów w prawdziwych projektach programistycznych? Większość (jeśli nie wszystkie) języków wysokiego poziomu ma w sobie operatory zmiany, ale kiedy właściwie miałbyś ich używać?
Wyobraź sobie, że mam dwa bajty bez znaku bi x. Muszę obliczyć bsubjako b - xi baddjako b + x. Jednak nie chcę, aby podczas tych operacji wystąpił niedomiar / przepełnienie. Na przykład (pseudokod): b = 3; x = 5; bsub = b - x; // bsub must be 0, …
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 …
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 …
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 …
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ą …
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 …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.