Grâce à l´opérateur modulo : ´%´
Exemple : 7%4 produira 3.
Cependant l´opérateur modulo à la réputation d´être " un peu lent" ( bon sur le machines actuelles c´erst complètement risible, mais implanté au sein d´une boucle s´exécutant des millions de fois, on peut tout de même ressentir une différence, aussi est-il préférable d´avoir recours quand on le peut aux opérateurs sur les bit : Nottament l´opérateur ´&´ ( syntaxe : ´val1 & val2´) qui effectue un ET logique entre les bits de val1 et ceux de val2, exemple :
3 & 2 = ( en binaire) = 0b11 & 0b10 = ( en binaire) 0b10 = 2
L´idée est de construire un masque binaire qui permettra, grâce à l´opérateur ´&´ de faire une opération de modulo.
Attntion cependant : ca ne marche qu´avec des puissance de 2 !
Mais prenons un exemple pour mieux comprendre :
Tu veux effectuer 7 modulo 4 ( note bien que 4 est une uissance de 2 ( 2²) :
7 mod 4 = 3
Pour cela, il te suffit de construire un masque binaire représentant la valeur 4-1=3 ( quand tu veux faire un modulo N avec cette méthode, tu masques avec la valeur N-1) et d´utiliser ´&´
7 % 4 = 7 & ( 4-1) = 7 & 3 = 3
De même :
9 % 4 = 9 & ( 4-1) = 9 & 3 = ( bin) 0b1001 & 0b11 = ( bin) 0b01 = 1
Et cela marche bien sûr avec n´importe quelle puissance de 2
En bref, le principe est de construire un masque binaire de la forme 0b00...011...1, dont les premier chiffres ne sont que des 0, et à partir d´un certain rang, ton masque ne comporte plus que des 1.