Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
binaire [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


binaire

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
binaire [2010/01/17 11:16]
tyrtamos
binaire [2012/03/06 14:23]
tyrtamos
Ligne 166: Ligne 166:
 ===== Quelques fonctions complémentaires de calcul binaire ===== ===== Quelques fonctions complémentaires de calcul binaire =====
  
-==== Rotation à droite d'un mot de nb bits, avec injection du bit de droite, à gauche ====+==== Rotation à droite d'un mot de bits, avec injection à gauche des bits perdus à droite ==== 
 + 
 +Rotation à droite de 1 bit 
 + 
 +<code python> 
 +rotd = lambda b, n=8: ((b>>1)|(b<<(n-1)))&((1<<n)-1) 
 +</code> 
 + 
 +Rotation à droite de k bits (valable pour k de 0 à n bornes incluses): 
 + 
 +<code python> 
 +rotd = lambda bk=1, n=8: ((b>>k)|(b<<(n-k)))&((1<<n)-1) 
 +</code> 
 + 
 +Simplification pour 8 bits (valable pour k de 0 à 8 bornes incluses) 
 + 
 +<code python> 
 +rotd = lambda b, k=1: ((b>>k)|(b<<(8-k)))&0xFF 
 +</code> 
 + 
 + 
 +==== Rotation à gauche d'un mot de n bits, avec injection à droite des bits perdus à gauche ==== 
 + 
 +Rotation à gauche de 1 bit 
 + 
 +<code python> 
 +rotg = lambda b, n=8: ((b<<1)|(b>>(n-1)))&((1<<n)-1) 
 +</code> 
 + 
 +Rotation à gauche de k bits (valable pour k de 0 à n bornes incluses):
  
 <code python> <code python>
-rotd = lambda b, nb: (b>>1) | ((b&1)<<(nb-1))+rotg = lambda b, k=1, n=8((b<<k)|(b>>(n-k)))&((1<<n)-1)
 </code> </code>
  
-==== Rotation à gauche d'un mot de nb bits, avec injection du bit de gauche, à droite ====+Simplification pour 8 bits (valable pour k de à 8 bornes incluses)
  
 <code python> <code python>
-rotg = lambda b, nb: ((b<<1)&(2**nb-1)) | ((b>>(nb-1))&1)+rotg = lambda b, k=1: ((b<<k)|(b>>(8-k)))&0xFF
 </code> </code>
  
binaire.txt · Dernière modification: 2012/03/06 14:25 de tyrtamos