Addition binaire

un pet, un vic, un 64...

Modérateur : Politburo

Répondre
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1407
Inscription : 21 août 2016 19:04

Addition binaire

Message par Ben » 19 août 2019 17:37

Salut,

J'ai trouvé un schéma électronique pour faire des additions binaires. J'imagine que l'UAL d'un 6502 travaille de la sorte. Je vous mets une reproduction. Je ne suis pas fortiche avec ces schémas. :-)
Schema AddBin.png
Schema AddBin.png (14.71 Kio) Consulté 861 fois
J'imagine que ça fonctionne et qu'il faut mettre ces dispositifs en série par nombre de bit qu'on veut additionner. Forcément, j'ai voulu vérifier :-)

Code : Tout sélectionner

10 scnclr:print "addition binaire"
20 input q$,w$:c=0:m$=""
30 a=val(right$(q$,1)):b=val(right$(w$,1)):q$=left$(q$,len(q$)-1):w$=left$(w$,len(w$)-1)
40 o=(a and not b) or (not a and b):s=(o and not c) or (not o and c)
50 p=a and b:l=o and c:c=p or l
60 m$=str$(s)+m$
70 if len(q$)>0 then 30
80 m$=str$(c)+m$:print m$
90 end
Et, évidemment, ça fonctionne très bien :-) Le programme est très simple, il ne valide rien. Les deux nombres doivent être de la même longueur pour que ça fonctionne. Tous les calculs se font en lignes 40 pour la somme et 50 pour le carry.

Il n'y a pas beaucoup d'ordinateurs/calculatrices qui ont la fonction XOR, on peut la remplacer par

Code : Tout sélectionner

 A xor B = (A and not B) or (not A and B)
Ben

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6541
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Re: Addition binaire

Message par gege » 20 août 2019 10:27

Bonjour,
Ça a l'air hyper compliqué, n'y a-t-il pas moyen de simplifier avec des trucs genre Karnaugh je-ne-sais-plus-quoi ?
Par ailleurs à voir la propagation du carry, il me semble avoir lu un truc au sujet du 74181 et d'un circuit périphérique à cet effet...
Et d'abord, que fait ton intéressant message dans ce sous-forum ?
A+
G.E.

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1407
Inscription : 21 août 2016 19:04

Re: Addition binaire

Message par Ben » 20 août 2019 18:02

gege a écrit :
20 août 2019 10:27
Ça a l'air hyper compliqué
Qu'est-ce qui a l'air compliqué? Le commodore n'a pas la fonction XOR, du coup, il faut la décomposer. Pour le schéma électronique, je ne sais pas s'il y a moyen de le simplifier ;-)
gege a écrit :
20 août 2019 10:27
Et d'abord, que fait ton intéressant message dans ce sous-forum ?
Ben...je ne sais pas très bien ou le poster. Comme j'ai fait le programme sur le C-128, je l'ai posté ici. C'est un peu dans le même ordre d'idée que la multiplication par décalage que j'avais aussi posté dans cette sous-rubrique.

Avatar de l’utilisateur
Capitaine
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 94
Inscription : 15 avr. 2007 11:55

Re: Addition binaire

Message par Capitaine » 21 août 2019 16:35

Tu as bien la fonction XOR en Basic 7.0 :

Code : Tout sélectionner

? XOR(1,1)
0
Sur C64 non, mais tu pourrais le faire facilement en assembleur.

Jean-Louis
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 279
Inscription : 14 mai 2010 19:15
Localisation : Lyon

Re: Addition binaire

Message par Jean-Louis » 21 août 2019 16:52

gege a écrit :
20 août 2019 10:27
Ça a l'air hyper compliqué, n'y a-t-il pas moyen de simplifier avec des trucs genre Karnaugh je-ne-sais-plus-quoi ?
Par ailleurs à voir la propagation du carry, il me semble avoir lu un truc au sujet du 74181 et d'un circuit périphérique à cet effet...
Simplifier, non ; c'est fait en portes logiques de base, et c'est ce que contient l'additionneur 4 bits 74181, voir sa constitution interne dans cet article :

https://en.wikipedia.org/wiki/74181

Ce circuit est d'ailleurs cascadable, on peut le chaîner avec d'autres 74181 si on veut opérer avec des mots de plus de 4 bits de large.

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1407
Inscription : 21 août 2016 19:04

Re: Addition binaire

Message par Ben » 21 août 2019 20:46

Capitaine a écrit :
21 août 2019 16:35
Tu as bien la fonction XOR en Basic 7.0 :

Code : Tout sélectionner

? XOR(1,1)
0
Oui, mais en Basic 7.0, le XOR est bien une fonction et pas un opérateur logique, d'où la syntaxe. Puis, ça ne complique pas vraiment le programme.

Répondre

Revenir vers « Commodore 8bits »