Quelques opérations sur les BitVectors.
Dans ce qui suit, on suppose avoir fait l'import suivant :
>>> from BitVector import BitVector
Considérons les vecteurs booléens suivants :
>>> bv1 = BitVector(bitlist = [0, 0, 1, 1, 1, 0]) >>> bv2 = BitVector(bitlist = [1, 0, 1, 0, 1, 1])
On peut effectuer le ou bit à bit, avec | :
>>> print bv1 | bv2 101111
On peut aussi effectuer le et bit à bit, avec & :
>>> print bv1 & bv2 001010
On peut encore effectuer le ou exclusif (xor) bit à bit, avec ^ :
>>> print bv1 ^ bv2 100101
On peut enfin effectuer la négation bit à bit, avec ~ :
>>> print ~bv1 110001
Considérons à nouveau
>>> bv1 = BitVector(bitlist = [0, 0, 1, 1, 1, 0]) >>> bv2 = BitVector(bitlist = [1, 0, 1, 0, 1, 1])
On peut comparer ces vecteurs de diverses manières :
>>> bv1 == bv2
>>> bv1 != bv2 True
>>> print bv1, bv2
>>> int(bv1), int(bv2) (14, 43) >>> bv1 < bv2 True >>> bv1 >= bv2 False
On peut réaliser une quelconque permutation, à l'aide des méthodes permute et unpermute.
Pour réaliser une permutation circulaire de N bits vers la gauche, on utilise l'opérateur <<, et >> pour un décalage vers la droite :
>>> print bv2 101011 >>> bv2 << 1 >>> print bv2 010111 >>> bv2 << 3 >>> print bv2 111010 >>> bv2 >>2 >>> print bv2 101110
On peut récupérer chacune des deux moitiés d'un BitVector de longueur paire, comme suit :
>>> bv = BitVector(bitstring = "1101111011") >>> [gauche, droite] = bv.divide_into_two() >>> print gauche, droite 11011 11011
L'opérateur + permet de concaténer deux objets BitVector :
>>> print gauche, droite 11011 11011 >>> print gauche + droite 1101111011