maths

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…

image de fdecomite

18 commentaires

gravatar
®om a dit :

Euh, 110×11 en base 10 ça fait 1210, pas 1110… Difficile de le représenter en binaire…

gravatar
Gloorian a dit :

Timo: 3, en binaire, c'est 101. Voilà d'où vient ton erreur :)

gravatar
kruz a dit :

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 :)

gravatar
Majoux a dit :

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

gravatar
Guenhwyvar a dit :


Ben faites en base dix : « cent dix × onze » et ça fait « mille cent onze ».


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.

gravatar
Guenhwyvar a dit :

… 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.)

gravatar
Yoha a dit :

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 .

gravatar
Yoha a dit :

Je fais pénitence pour le «On a alors économiser» et m'en vais me flageller allégrement.

gravatar
CoD a dit :

3 x 3 en binaire -> 11 x 11 -> 121 alors que 9 en binaire 1001

J'ai rien compris ou quoi ?

gravatar
Majoux a dit :

11 x 11 = 1001 en base 2

gravatar
Iste a dit :

Bon bah, ca marche ou pas alors ?

gravatar
Jarbinier a dit :

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

gravatar
KAO a dit :

il y a 10 sortes de personnes, ceux qui savent compter en binaire et ceux qui ne savent pas ^^

gravatar
Cellix a dit :

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

gravatar
Le Hollandais Volant a dit :

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 ;)

gravatar
enloz a dit :

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 :-)

gravatar
Le Hollandais Volant a dit :

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 =.

gravatar
Yoha a dit :

@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