Je veux savoir s'il existe une règle divisible dans le système binaire pour la division par 3.
Par exemple: en décimal, si la somme des chiffres est divisée par 3 alors le nombre est divisé par 3. Pour exmaple: 15 -> 1+5 = 6 -> 6
est divisé par 3, donc 15 est divisé par 3.
La chose importante à comprendre est que je ne cherche pas un CODE qui le fera. Bool flag = (i% 3 == 0); n'est pas la réponse que je cherche. Je cherche quelque chose qui soit facile à faire pour l'homme tout comme la loi décimale.
Reportez-vous à ce site Web: Comment savoir si un nombre binaire est divisible par trois
Comptage de base du nombre de bits de positions impaires non nulles et de bits de positions paires non nulles à partir de la droite . Si leur différence est divisible par 3, alors le nombre est divisible par 3.
Par exemple:
15 = 1111
qui a 2 bits impairs et 2 pairs non nuls. La différence est 0. Ainsi 15
est divisible par 3
.
185 = 10111001
qui a 2 bits non nuls impairs et 3 bits pairs non nuls. La différence est 1. Ainsi 185
n'est pas divisible par 3
.
Explication
Prendre en compte 2^n
valeurs. Nous savons que 2^0 = 1
est congruent 1 mod 3
. Donc 2^1 = 2
est congurant 2*1 = 2
mod 3. Poursuivant le modèle, nous remarquons que pour 2^n
où n est impair, 2^n
est congruent 1 mod 3
et même il est congruent 2 mod 3
lequel est -1 mod 3
. Donc 10111001
est congruent 1*1 + 0*-1 + 1*1 + 1*-1 + 1*1 + 0*-1 + 0*1 + 1*-1
mod 3 qui est congruent 1 mod 3
. Ainsi 185 n'est pas divisible par 3.