Addition binaire

un pet, un vic, un 64...

Modérateur : Politburo

Répondre
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Addition binaire

Message par Ben »

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) Vu 10633 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 du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7141
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: Addition binaire

Message par gege »

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 : 1549
Enregistré le : 21 août 2016 19:04

Re: Addition binaire

Message par Ben »

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 du membre
Capitaine
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 97
Enregistré le : 15 avr. 2007 11:55

Re: Addition binaire

Message par Capitaine »

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 à 1200 bauds
Fonctionne à 1200 bauds
Messages : 434
Enregistré le : 14 mai 2010 19:15

Re: Addition binaire

Message par Jean-Louis »

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 : 1549
Enregistré le : 21 août 2016 19:04

Re: Addition binaire

Message par Ben »

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

Retourner vers « Commodore 8bits »