On nous donne un nombre entier non signé, supposé. Et sans utiliser d'opérateurs arithmétiques, c'est-à-dire +
-
/
*
o %
nous devons trouver x mod 15
. Nous pouvons utiliser des manipulations de bits binaires.
Aussi loin que je puisse aller, je l'ai obtenu sur la base de 2 points.
a = a mod 15 = a mod 16
para a<15
Soit a = x mod 15
puis a = x - 15k
(pour un certain nombre de valeurs non négatives k
).
c'est-à-dire a = x - 16k + k
...
c'est-à-dire a mod 16 = ( x mod 16 + k mod 16 ) mod 16
c'est-à-dire a mod 15 = ( x mod 16 + k mod 16 ) mod 16
c'est-à-dire a = ( x mod 16 + k mod 16 ) mod 16
OK. Maintenant, pour mettre cela en œuvre. A mod16
Les opérations sont essentiellement & OxF
. et k
est en fait x>>4
Alors a = ( x & OxF + (x>>4) & OxF ) & OxF
.
Cela revient à additionner 2 nombres de 4 bits. Ce qui peut être fait par des expressions de bits.
sum[0] = a[0] ^ b[0]
sum[1] = a[1] ^ b[1] ^ (a[0] & b[0])
... et ainsi de suite
Cela ressemble à de la triche pour moi. J'espère une solution plus élégante