Incompréhension bit_vector_shift

Incompréhension bit_vector_shift

by Rémi Claude Delacourt -
Number of replies: 1

Bonjour,

Dans la description de bit_vector_shift() il est dit que l'opération se fait sur "un vecteur d'une distance quelconque", il est ensuite conseillé d'utiliser bit_vector_extract_zero_ext(). Cependant, pour bit_vector_extract_zero_ext() si la size donnée n'est pas un multiple de 32 il est dit de l'arrondir au multiple supérieur. Donc en utilisant cette méthode le résultat de l'appel à cette méthode sera un vecteur d'une taille multiple de 32 et non pas d'une taille quelconque.

Autrement dit, en utilisant bit_vector_extract_zero_ext() dans bit_vector_shift() il se pourrait que l'on change la taille du vecteur.

Est-il donc important que l'on conserve la taille du vecteur en appelant bit_vector_shift() ?

Merci d'avance pour votre réponse.

In reply to Rémi Claude Delacourt

Re: Incompréhension bit_vector_shift

by Jean-Cédric Chappelier -

Encore une fois (cf https://moodlearchive.epfl.ch/2019-2020/mod/forum/discuss.php?d=26452#p75876 et toutes les discussions qui y sont citées), cette remarque sur la taille multiple de 32 bits est une remarque d'implémentation, pas d'interface ! (les exemples de zero_ext et wrap donnés dans la section I.2 de la donnée ne sont d'ailleurs pas de taille 32) : un vector_bit, en tant qu'objet, peut être de taille quelconque. C'est simplement TRES SIMPLE à implémenter si (en implémentation, pas en interface) on arrondi la taille au multiple de 32 (supérieur) et on remplit avec des 0 ; toutes les opérations deviennent alors assez simples.

Bref, je vais aussi supprimer de la donnée cette phrase (arrondi) qui cause plus de souci que d'aide...