
Oui, il m'arrive de compter en binaire quand j'ai rien à faire :-D.
J'ai même une bonne page sur ça.
ÉDIT : en fait non : epic fail, ça ne marche pas :-D. Dommage.
L'astuce : (n)2 × (m)2 = (n)10 × (m)10.
En gros, si on a deux nombres en binaire à multiplier entre eux, vous pouvez les multiplier à la calculatrice en base 10, ça marchera aussi : le résultat en base 10 (sans le convertir) est aussi le résultat en base 2.
Exemple : 5 × 3 donnent en binaire : 101 × 11. Ben faites en base dix : « cent dix × onze » et ça fait « mille cent onze ».
Ben comme par hasard, 1111 en binaire, c'est 15. Et on vérifie bien 3 × 5 = 15.
Magique ?
Aucune idée, mais ça marche…
Peut-être parce que toutes les bases (2, 4, 16 ou 42…) se notent « 10 » dans leurs propres bases…
18 commentaires
Euh, 110×11 en base 10 ça fait 1210, pas 1110… Difficile de le représenter en binaire…
Timo: 3, en binaire, c'est 101. Voilà d'où vient ton erreur :)
J'en reste bouche bée, prenez une calculette avec les bases et vérifiez
avant de dire des bêtises...qu'on dit tous à un moment ou un autre :)
Encore heureux que ça marche !
Sachant que 3 base 10 = 11 base 2 et que 5 base 10 = 101 base 2
alors
3 base 10 x 5 base 10 = 101 base 2 x 11 base 2
C'est du calcul mental, ça ? :D
À vue de nez, je dirais que t'as voulu faire 110 × 11 = 110 × 10 + 110 × 1, mais qu'en fait t'as fait 110 × 10 = 1 100, et qu'ensuite t'as rajouté 11 au lieu de rajouter 110.
… ou pas, en fait. J'avais lu en diagonale, et du coup ton erreur vient du fait que 5 en binaire c'est 101, pas 110, et là ça marche mieux : 101 × 11 = 1 111, et on a bien 0b1111 = 15.
(Désolé du double post, mais il manque une fonction edit, quand même.)
Tiens, sinon, dans le sujet, une méthode qui permet d'économiser un peu de calcul dans le produit en base b.
L'idée d'origine est la méthode dite du «diviser pour régner». On décompose deux nombres en leurs parties hautes et leurs parties basses:
A = A1×b + A2 (ex: 12 = 1×10 + 2)
B = B1×b + B2 (ex: 47 = 4×10 + 7)
A × B
= (A1×b + A2) × (B1×b + B2)
= A1×B1×b² + (A1×B2 + A2×B1)×b + A2×B2
Si on passe sur le calcul des sommes, on a ici quatre produits à calculer et, dans les faits, on ne gagne pas grand chose (complexité en O(n²)).
(le nombre d'opération T(n) est de la forme: T(n) = 4×T(n/2) + O(1) donc la complexité est en O(n^(log 4 / log 2)) ).
Mais remarquons que (A1 + B1) × (A2 + B2) = A1×B1 + (A1×B2 + A2×B) + A2×B2. Si à ce produit on ajoute le calcul des produits A1×B1 et A2×B2. On a alors économiser un produit et la complexité n'est plus qu'en O(n^(log 3 / log 2)) soit environ O(n^1.58).
Partiel d'algo powa :-D .
Je fais pénitence pour le «On a alors économiser» et m'en vais me flageller allégrement.
3 x 3 en binaire -> 11 x 11 -> 121 alors que 9 en binaire 1001
J'ai rien compris ou quoi ?
11 x 11 = 1001 en base 2
Bon bah, ca marche ou pas alors ?
Ca parait beau, mais.. marche pas !!
En plus de l'exemple de CoD
3d*6d=18d
11b*110b=10010b
11d*110d=1210d
pareil pour
3*7=21
11b*111b=10101b
11d*111d=1221d
il y a 10 sortes de personnes, ceux qui savent compter en binaire et ceux qui ne savent pas ^^
Une vrai astuce en binaire qui marche, en revanche, et qui est beaucoup utilisée en programmation.
Pour diviser un nombre par 2, il suffit de le convertir en binaire et de supprimer le dernier chiffre à droite.
Exemple:
26d = 11010b
On enlève le dernier zéro (ce qui donne 1101b) et on a bien :
1101b = 13d
Euh, gros fail pour moi : cette astuce ne marche pas toujours.
J'avais essayé avec 5 ou 6 nombres, ça marchait à chaque fois, bref.
Pour me faire pardonner, en base 10, voilà un truc remarquable : prenez l'un des nombres suivants : 10, 11, 12, 13 ou 20.
Prenez le carré de ce nombre. Par exemple : 12^2=144.
Ben si on inverse les chiffres du nombres, le carré sera l'inverse des chiffres du carré de notre nombre de départ :
12^2 = 144
21^2 = 441
Essayez avec les autres nombres de la liste ;)
Alors la je suis mort de rire pour ce billet. Comment compter en binaire bin avec des opérandes logiques and, or, Xor.
Et pour faire une multiplication en binaire j'ai plutôt la démarche suivante:
par exemple 6x10=60
(6)10=(110)2
(10)10=(1010)2
1010
and 110
____
0000
or 1010.
or 1010..
______
111100
Et ça marche même avec une retenu dans l'opération or.
Note pour ceux qui n'ont rien compris les opérande logique c'est par là -> explication
tient le lien est pas sur ton site :-)
And or et xor sont des opérateurs logiques. Y'en a bas besoin si on voit le système binaire comme une base mathématique.
On peut toujours utiliser le + et le =.
@Le Hollandais Volant : En fait ça marche uniquement avec deux chiffres mais dans n'importe quelle base. Ça vient du fait que:
(ab + c)² = a²b² + 2acb + c²
et
(cb + a)² = c²b² + 2acb + a²
Les commentaires sont fermés pour cet article