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

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

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
binaire [2010/01/17 11:16]
tyrtamos
binaire [2012/03/06 14:25] (Version actuelle)
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 à nbornes incluses): 
 + 
 +<code python> 
 +rotd = lambda b, k=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 0 à 8bornes 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.1263723376.txt.gz · Dernière modification: 2010/01/17 11:16 de tyrtamos