W C, czy operatory przesunięcia ( <<, >>) są arytmetyczne czy logiczne?
W C, czy operatory przesunięcia ( <<, >>) są arytmetyczne czy logiczne?
Edycja: Więc w zasadzie to, co próbuję napisać, to 1-bitowy hash double. Chcę zmapować doubledo truelub falsez szansą 50/50. W tym celu napisałem kod, który wybiera losowe liczby (tak jak na przykład, chcę tego użyć na danych z regularnościami i nadal otrzymuję wynik 50/50) , sprawdza ich ostatni...
W projekcie C ++, nad którym pracuję, mam wartość typu flagi, która może mieć cztery wartości. Te cztery flagi można łączyć. Flagi opisują rekordy w bazie danych i mogą być: nowy rekord usunięty rekord zmodyfikowany rekord istniejący rekord Teraz dla każdego rekordu chcę zachować ten atrybut,...
Szukam skutecznego sposobu na określenie pozycji najmniej znaczącego bitu, który jest ustawiony jako liczba całkowita, np. Dla 0x0FF0 byłoby to 4. Prosta implementacja jest taka: unsigned GetLowestBitPos(unsigned value) { assert(value != 0); // handled separately unsigned pos = 0; while...
Jeśli mam jakąś liczbę całkowitą n i chcę poznać położenie najbardziej znaczącego bitu (to znaczy, jeśli najmniej znaczący bit znajduje się po prawej stronie, chcę poznać położenie najdalszego lewego bitu, czyli 1), jaka jest najszybsza / najskuteczniejsza metoda dowiedzenia się? Wiem, że POSIX...
Mam kod mniej więcej taki: #include <bitset> enum Flags { A = 1, B = 2, C = 3, D = 5, E = 8, F = 13, G = 21, H, I, J, K, L, M, N, O }; void apply_known_mask(std::bitset<64> &bits) { const Flags important_bits[] = { B, D, E, H, K, M, L, O };
Chociaż istnieje wiele sposobów odwrócenia kolejności bitów w bajcie, jestem ciekawy, który z nich jest „najprostszy” do zaimplementowania przez programistę. I odwracając mam na myśli: 1110 -> 0111 0010 -> 0100 To jest podobne do tego pytania PHP , ale nie jest jego duplikatem . To jest...
int temp = 0x5E; // in binary 0b1011110. Czy istnieje taki sposób, aby sprawdzić, czy bit 3 w temp jest 1 czy 0 bez przesuwania bitów i maskowania. Chcę tylko wiedzieć, czy jest do tego jakaś wbudowana funkcja, czy też jestem zmuszony napisać ją sam.
Rozważ ten kod: x = 1 # 0001 x << 2 # Shift left 2 bits: 0100 # Result: 4 x | 2 # Bitwise OR: 0011 # Result: 3 x & 1 # Bitwise AND: 0001 # Result: 1 Rozumiem operatory arytmetyczne w Pythonie (i innych językach), ale nigdy nie rozumiałem zbyt dobrze operatorów „bitowych”. W powyższym...
Chcę wyodrębnić bity liczby dziesiętnej. Na przykład 7 jest binarne 0111 i chcę uzyskać 0 1 1 1 wszystkie bity przechowywane w bool. Jak mogę to zrobić? OK, pętla nie jest dobrą opcją, czy mogę zrobić coś
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...
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...
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 !=...
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 +...
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...
Jak mogę mnożyć i dzielić używając tylko przesunięcia bitowego i dodawania?
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
Linia 294 od źródła java.util.Random mówi if ((n & -n) == n) // i.e., n is a power of 2 // rest of the code Dlaczego to?
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, not 254 i b = 250; x = 10; badd = b + x; //...