Jul 03, 2024

Wiki

Python

Aide

edit SideBar

Search

Operations


Quelques opérations sur les BitVectors.

Dans ce qui suit, on suppose avoir fait l'import suivant :

  >>> from BitVector import BitVector

Opérations logiques

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])

Le ou booléen

On peut effectuer le ou bit à bit, avec | :

  >>> print bv1 | bv2
  101111

Le et booléen

On peut aussi effectuer le et bit à bit, avec & :

  >>> print bv1 & bv2
  001010

Le ou exclusif

On peut encore effectuer le ou exclusif (xor) bit à bit, avec ^ :

  >>> print bv1 ^ bv2
  100101

La négation booléenne

On peut enfin effectuer la négation bit à bit, avec ~ :

  >>> print ~bv1
  110001

Comparaison

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 :

  • Sont-ils égaux, ou non ?
  >>> bv1 == bv2
False
  >>> bv1 != bv2
  True
  • bv1 est-il inférieur à bv2, quand on compare leur valeur décimale ?
  >>> print bv1, bv2
001110 101011
  >>> int(bv1), int(bv2)
  (14, 43)
  >>> bv1 < bv2
  True
  >>> bv1 >= bv2
  False

Permutations

Permutation quelconque

On peut réaliser une quelconque permutation, à l'aide des méthodes permute et unpermute.

Permutation circulaire

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

Moitiés

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

Concaténation

L'opérateur + permet de concaténer deux objets BitVector :

  >>> print gauche, droite
  11011 11011
  >>> print gauche + droite
  1101111011

Page Actions

Recent Changes

Group & Page

Back Links