Base 16

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 26 Fév 2012, 13:29

archiM a écrit:Bonjour,

Pourquoi les processeurs ne calculent-ils pas en base 8 ou 16 (au lieu de le faire bit par bit)? Ne serait-ce pas plus rapide ? Il suffirait de mémoriser tous les produit 8X8 ou 16X16.
Bonjour,
Si mes vieux souvenir ne sont pas trop lointains, la raison est tout simplement "du courant" ou "pas de courant".
On a fait aussi des essais en base 3 (courant négatif, rien, courant positif). En tout cas; je ne vois pas le rapport avec la rapidité.
Le binaire est tout de même très intéressant, je sais compter jusqu'à 1023 avec les doigts de mes deux mains, et vous ?



Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 26 Fév 2012, 20:24

archiM a écrit:Je parlais de multiplier en binaire, mais 4 bits par 4 bits. Ma question peut sembler idiote à des matheux, mais mon savoir étant limité, je voudrais qu'on m'explique clairement :
- Quand je tape "3 x 4" sur ma calculette, que se passe-t-il ensuite ?
Merci.

Oh, mais moi, je suis pas matheux, et ces notions sont assez loin pour moi.
Le principe de base est que l'individu pense et travaille avec des chiffres, l'ordinateur ne pense pas, et la seule chose qu'il sache faire, c'est
1- le OU si au moins d'un des deux vit est à 1, le résultat est 1
2- le ET si les deux bits sont à 1, le résultat est 1
3- le NOT si le bit est à 0 alors il met 1 et réciproquement.

L'opération 3 x 4, c'est trop compliqué, on va faire 3 + 4
Vous tapez 3 et un séparateur (le signe '+') la machine va mettre 3 dans un registre X, donc X contient 0000 0011 (on suppose 1 octet donc 8 bits)
Le signe '+' a été mémorisé au passage.
Vous tapez 4 et un séparateur (le signe '=') la machine va mettre 4 dans un registre Y, donc Y contient 0000 0100.
Comme le séparateur est '=", la machine va faire l'addition, qui donné naturellement 0000 0111, et va gentiment afficher 7.

Si ça avait été 3 - 4 on aurait eu quelque-chose comme ça 1000 0001
Le premier 1 (à gauche) est le bit de signe, il est positionné à 1, puisque négatif, le dernier 1 est le résultat de la soustraction. Mais là, ça diffère suivant les machines.

Une multiplication n'est qu'une addition avec décalage.
En fait, la machine n'utilise que le binaire, l'utilisateur que le décimal, et le pauvre informaticien, il est obligé de connaitre en plus l'hexadécimal. L'octal est très peu utilisé.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 27 Fév 2012, 13:18

Bonjour,
Il est vrai qu'il y a eu, il y a une bonne trentaine d'années, des essais avec cette logique. Il faut croire que ce n'était pas la meilleure solution.
Vous savez dans ce domaine, c'est déjà assez difficile de connaitre suffisamment de choses, il vaut mieux se limiter à les admettre, les retenir et surtout savoir en tirer profit, c'est à dire savoir les utiliser.

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 13:39

par Dlzlogic » 28 Fév 2012, 12:59

archiM a écrit:Je pense que le problème en multipliant par groupes de bits est l'utilisation de retenues, ce qui implique des additions supplémentaires. L'immense avantage de la multiplication en binaire est l'absence de retenues.
En tout cas merci d'avoir pris du temps à me répondre.

Bonjour, mais si, il y a une retenue, exemple 2+2
0010 + 0010 = 0100

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 28 Fév 2012, 20:12

salut archiM,

actuellement, pour une multiplication genre 3x4, on procède ainsi:
on représente 4 en binaire, et on fait qqch comme
resultat = 0
faire 3 fois
resultat = resultat + 4
fin fait

concernant ta question pourquoi ne pas avoir un moyen d'avoir directement resultat= 12 = 3x4 c'est tout simplement hardware.
Tu prends un intervalle I={0,1,2,3}, nous on prend un couple IxI et on veut calculer O.
On peut cabler sous forme d'arbre.
Par exemple
on crée un ptit bloc qui en entrée prend un vecteur de 4 bits.
et en sortie possède 16 broches qui valent toutes 0 et seule une vaut 1 (correspondant a la valeur décimale du vecteur de 4 bits d'entrée).
Sur chacune de ces sorties, tu enquilles un deuxieme bloc qui de plus prend en entrée un second vecteur de 4 bits (la deuxieme opérande). En sortie de ce second bloc, tu "hardcodes" le produit: tu te démerdes pour que chaque "broche" de sortie soit nulle, sauf une qui vaut la valeur du produit.
Le problème de cette approche, bien que plus rapide, c'est tout simplement que ca prend de la place (bcp bcp de broches/blocs), c'est pas réutilisable (si jamais on veut pas 4, mais 5 bits)
Idéalement, il faudrait un composant qui soit capable de fournir directement une valeur analogique résultant de 3x4 qui suffise à derrière être convertie de manière assez fiable en binaire, mais ca dépasse mes connaissances :ptdr:
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 29 Fév 2012, 13:32

0011 x 1010 = 1110
comment tu sais que ca fait 1110?
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 01 Mar 2012, 11:55

jreste dubitatif, parce que je vois pas comment tu vas taper au bon endroit dans le registre.
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 02 Mar 2012, 19:10

ben nan c'est pas pareil
0x0=0, 0x1=0, 1x0=0, 1x1=1
j'intuite très fortement que si le produit est géré par l'alu, alors il est cablé...

donc même si tu stockes ton résultat dans un registre, il faut que tu sois capable de savoir ou tu tapes dans le registre, et pour ca, ben tes obligé de calculer l'index, ce qui ramene au même probleme.

A un moment ou a un autre, il faut soit cabler, soit décomposer le calcul en éléments "cablés" et comme dit plus haut cabler le prod pour 16x16 en une passe, ca prend de la place...
la vie est une fête :)

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 15 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite