Jump to content
0_o

[Tutorial] Codul complementar

Recommended Posts

Stiati ca un calculator nu stie face decat adunari ?  Nu stie face nici scaderi, nici inmultiri, nici impartiri. Atunci cum se descurca ?

Cu scaderile, folosind operatiile in cod complementar. De inmultiri n-are nevoie (veti vedea ulterior de ce), iar impartirile sunt o adevarata problema. 

Aici se va trata codul complementar. Pentru a intelege mai usor principiul, se va da un exemplu in numere zecimale, care insa este tare "handicapat" fata de ce se poate face in binar (daca inca nu stiti de ce, veti intelege intr-o postare ulterioara).

Fie un calculator zecimal cu registre care pot stoca cate doua cifre, deci valorile reprezentabile sunt 00 01 02 03 ... 09 10 11 12 ... 20 21 ... 98 99, adica in total 100 de valori.

Aceste valori vor fi considerate coduri. Intrucat exista 100 de coduri, acestea pot fi asociate cu 100 de numere intregi. Pentru a putea reprezenta si numerele negative (avem nevoie de ele, nu ?), codurile le distribuim in modul urmator (nu e la voia noastra    ):

- codul 00 il alocam numarului 0;

- codurile 01 ... 49 le alocam numerelor 1 ... 49;

- codurile 50 ... 99 le alocam numerelor -50 ... -1 astfel:

Numar -50 -49 ... -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6 ...  48  49
Cod    50  51 ... 94  95  96  97  98  99  00  01  02  03  04  05  06 ...  48  49

Si acum sa ne jucam. Cand avem de facut o operatie, inlocuim numarul cu codul, apoi facem operatiile cu codurile si convertim rezultatul in numar.

Remember: calculatorul nostru are doar doua cifre zecimale.

1. Adunarea a doua numere pozitive, rezultat pozitiv. Exemplu:

    2 + 3 = 02 + 03 = 05 = 5  (frumos, adevarat si la mintea cocosului    )

2. Scaderea este inlocuita cu adunarea cu un numar negativ. Exemple:

    5 - 3 = 5 + (-3) = 05 + 97 = 102 (1 din fata nu poate fi stocat si se pierde) = 2  (!! in pofida pierderii rezultatul este, totusi, corect !  )

    3 - 5 = 3 + (-5) = 03 + 95 =  98 = -2  (mda, de data asta nu a fost nicio "scamatorie", iar rezultatul este corect. )

3. Inmultirea numerelor pozitive si negative. Exemple:

    2 x 3 = 02 x 03 = 06 = 6  (deocamdata am revenit "pe pamant" )

    2 x (-3) = 02 x 97 = 194  (1 din fata se pierde) = -6  (iarasi pierderea aia !  rezultatul insa este...  )

    (-2) x (-3) = 98 x 97 = 9506 (95 din fata se pierde !!) = 6  (wtf, iar s-a facut ceva "pe sub mana", si totusi... )

4. Impartirea se face prin incercari si erori (dar cu un algoritm eficient). Trebuie cunoscut ordinul de marime al catului (nu e greu de determinat), se inmulteste impartitorul cu catul si se compara cu deinmultitul. De aia operatia de impartire a numerelor intregi este mult mai lunga.

Sii... veti spune, bine dar 30 + 40 = 30 + 40 = 70 = -30  (rezultat wrong, wtf ?  )

Ei, deoarece numarul maxim care are cod este 49, aici apare depasirea si se semnaleaza o eroare (calculatorul nu poate face operatia). Cum isi da seama un calculator ca este o depasire ?  In calculatorul zecimal prezentat nu poate, dar intrunul binar da. Cum, se va explica intro postare ulterioara.

by suri

Link to comment
Share on other sites

nu-ti fa griji nu numa el o copiat.

Au fost mai multi , inafara de eu , nu-i numesc , ca nu doresc sa-mi umplu capul ..cu toate chestiile astea..

!_30 o copiat programe

Da am copiat  ;D , defapt nu am copiat programele si link-urile porgramelor postate de nu stiu cine , si nu numai el ... am copiat main multe link-uri de la mai multi indivizi.Ca sa te simti bine nu de alta.Cum ti-am demonstrat.. nu mai conteza..

Cum am mai zis  si repet , chestia de mai sus , e la panarama asa , dar atata timp cat tot prostu invata din ce am scris noi , chiar daca e scris pe alt forum , fara suparare.Dar macar acolo nume .. credite , si m-a deranjat ca tipu a venit si are 7 posturi numai din tutorialele luate  de pe forumurile noastre de pe 3 x.E corect ? da e foarte corect..invatam .. dar sa o faci cu cap si copierea asta.

Si btw , toate tutorialele mele , + cartea am pus-o si aici si pe forumul meu si al lui shoker. ca sa invete toata lumea . ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...