Peu d'emballage de tableau d'entiers

J'ai un tableau d'entiers, permet de supposer qu'ils sont de type int64_t. Maintenant, je sais que seul chaque premier n bits de l'entier sont significatifs (qui est, je sais qu'ils sont limités par certaines limites).

Quel est le moyen le plus efficace pour convertir le tableau de la manière que toutes inutiles espace est supprimé (c'est à dire que j'ai le premier entier à a[0], le second à a[0] + n bits et ainsi de suite) ?

Je voudrais qu'il soit général, autant que possible, parce que n varient de temps à autre, mais je suppose qu'il pourrait être intelligent optimisations spécifiques n comme des puissances de 2 ou qqch.

Bien sûr, je sais que je peux juste itération de la valeur sur la valeur, je veux juste vous demander StackOverflowers si vous pouvez penser de certains plus intelligente.

Edit:

Cette question n'est pas à propos de la compression de la matrice de prendre le moins d'espace possible. J'ai juste besoin de "couper" n bits de chaque entier et compte tenu de l'éventail, je sais exactement n de bits je peux couper.

  • par curiosité, qu'avez-vous utilisé à la fin?
  • Rien de vraiment, le projet était le but est mort:). Mais à partir des réponses ici et mes besoins, je finirais probablement à l'aide de quelques masques et de calcul des compensations par la main. Peut-être à l'aide de certains modèles intelligents ainsi.
  • 3 ans après que vous avez demandé, j'ai enfin répondu à votre question en mettant en place un accès aléatoire conteneur dans lequel les éléments sont emballés hermétiquement. Voir ma réponse: stackoverflow.com/a/18038506/216063
InformationsquelleAutor pajton | 2010-03-07