Per essere sulla stessa pagina, assumiamo sizeof (int) = 4 e sizeof (long) = 8.Bithifting efficiente di un array di int?
Dato un array di numeri interi, quale sarebbe un metodo efficiente per passare in modo logico l'array a sinistra oa destra?
Sto contemplando una variabile ausiliaria come una lunga, che calcolerà il bithift per la prima coppia di elementi (indice 0 e 1) e imposta il primo elemento (0). Continuando in questo modo, il bithift per gli elementi (indice 1 e 2) sarà computer, quindi verrà impostato l'indice 1.
Penso che questo sia in realtà un metodo abbastanza efficiente, ma ci sono degli svantaggi. Non riesco a passare in rassegna più di 32 bit. Penso che usare più variabili ausiliarie funzionerebbe, ma sto immaginando la ricorsione da qualche parte lungo la linea.
@nn - è un po 'poco chiaro quello che stai cercando qui. Cosa vuoi fare con uno qualsiasi dei dati spostati e persi? Desideri spostare logicamente o spostare aritmeticamente i dati? O stai solo leggendo una selezione di bit di dati binari a caso? Ad esempio, leggi un int di 4 byte dal bit di posizione 27 al bit 59 da un flusso di dati binari di 100 byte? – ChrisBD
@ChrisBD: Scusa buona domanda. Spostare logicamente. In realtà sto manipolando i grandi numeri interi rappresentati come una matrice di interi, dove ogni int corrisponde a una cifra in base 2^(sizeof (int) * 8) = 2^32. – snap
Ho cercato un po 'di riferimenti alla vertigine e non ho visto alcun trucco per questo, immagino che il modo ovvio sia l'unico modo: -/ – fortran