3 votes

Comment trouver x mod 15 sans utiliser d'opérations arithmétiques ?

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X