Aby być na tej samej stronie, załóżmy, sizeof (int) = 4 i sizeof (long) = 8.Efektywne przesunięcie tablicy int?
Biorąc pod uwagę tablicę liczb całkowitych, jaka byłaby skuteczna metoda logicznego przesunięcia tablicy w lewo lub w prawo?
Zastanawiam się nad zmienną pomocniczą, taką jak długa, która wyliczy bitshift dla pierwszej pary elementów (indeks 0 i 1) i ustawi pierwszy element (0). Kontynuując w ten sposób bitshift dla elementów (indeks 1 i 2) będzie komputerem, a następnie zostanie ustawiony indeks 1.
Myślę, że jest to dość skuteczna metoda, ale są wady. Nie mogę przenieść więcej niż 32 bitów. Myślę, że używanie wielu zmiennych pomocniczych działałoby, ale wyobrażam sobie rekurencję gdzieś wzdłuż linii.
@nn - to trochę niejasne, co tu robisz. Co chcesz zrobić z dowolnymi danymi, które są przesunięte i utracone? Czy chcesz logicznie przesuwać lub przesuwać arytmetycznie dane? A może po prostu czytasz losowo wybrane bitowe bity danych? Na przykład odczytać 4-bajtowe int z bitu pozycji 27 do 59 z 100-bajtowego strumienia danych binarnych? – ChrisBD
@ChrisBD: Przepraszam, dobre pytanie. Logiczne przesunięcie. Właściwie operuję dużymi liczbami całkowitymi reprezentowanymi jako tablica ints, gdzie każdy int odpowiada cyfrze w podstawie 2^(sizeof (int) * 8) = 2^32. – snap
Szukałem kilku czarodziejskich odniesień i nie widziałem żadnej sztuczki do tego, myślę, że oczywisty sposób jest jedyny sposób: -/ – fortran