Jump to content

Recommended Posts

Posted

int main() {

int n,m,i;

printf ("\n Tastati o valoare intreaga");

scanf ("%d", &n);

puts ("reprezentare binara a nr:\n");

for (i=0;i<16;i++){

m=1<< 15-i;

if(n&m)

putchar('1');

else

putchar('0');

}

system("pause");

return 0;

}

aceasta este un program facut de unu ... ceea ce vreau eu sa stiu este, sa-mi explice cineva fiecare linie cam ce face, in special de la "for" in jos... ms mult mult!

scz ca nu am 10 posturi, abia acuma mi-am facut cont si am nevoie de raspuns .. o sa contribui pe parcurs!

Posted

Citeste pe n, initializeaza pe m cu 1 (in binar vine 00000000 00000000 0000000 00000001 - pt ca e declarat ca int). apoi, prin shiftare (instructiunea m=1<<15-i) muta bitul de 1 pe cea mai din dreapta pozitie din m - MSB-ul sau Most Segnificant Bit. Testeaza daca bitul din n care se afla pe aceeasi pozitie cu cel din m este 1 sau 0 si afiseaza mesaj corsepunzator - instructiunea if(n&m). De fapt, daca bitul de pe pozitia cea mai semnificativa din n este 1 atunci n&m va intoare o valoare mai mare ca 0; in cazul asta afiseaza "1" altfel daca n&m == 0 afiseaza "0".

Dupa asta "i"-ul se modifica, o sa fie 1. "m"-ul se va reinitializa cu 1 la intrarea in bucla si va fi shiftat spre dreapta cu 15-i, adica 14, pozitii, si se reia procesul.

Posted

@Zamolxis666 acum am vazut ca ai postat si tu :)).

Desi int e pe 4 octeti (4*8=32 biti) se presupune ca valorile luate de variabilele create cu el nu vor lua valori mai mari de 2^16 pentru 16 biti, de aceea se ia un for de la 0 la 15 inclusiv pentru a muta la stanga pe bitul 1 intr-un sir de zerouri.

1 << x muta pe 1 cu x pozitii la stanga (numarul astfel obtinut va fi acelasi lucru cu 2^x) mai exact 1 << 2 == (...00100) == 4 si forul tau face acelasi lucru: muta pe rand pe 1 incepand din pozitia "cea mai din stanga" (de pe a 16-a de la dreapta la stanga), apoi il muta pe a 15-a, pe a 14-a si tot asa exact ca o nedeterminata X la un polinom. Apoi se aplica & (care face acelasi lucru ca si && numai ca nu face direct intre numere ci intre biti luand bit cu bit din fiecare numar) iar n&m va avea urmatoarea semnificatie: 1 daca pe pozitia 15-i (numerotarea se incepe de la 0) exista 1 si 0 in caz contrar, deoarece toti bitii care sunt 0 din m vor da 0 din start prin & si numai un singur bit care este 1 pe o anumita pozitie va da 1 sau 0 in functie de bitul care se afla pe respectiva pozitie din n.

Oricum prin treaba de mai sus ti-am facut mai mult un rau, ce crezi ca te ajuta mai mult ... sa iti dau niste referinte catre prioritatea operatorilor si ceva lucru pe biti si sa cauti singur sa te documentezi si sa afli in final singur sa ai satsfactia si memoria aia selectiva sau ca ti-am dat deja totul pe tava, traiesti cu falsa impresie ca ai inteles si pui mai departe caramizi peste goluri, peste o fundatie subreda ?

Posted
cout<<m; era o modalitate simpla, good point Starker.

Dar nu inteleg de ce nu folosesti o carte, o sa te ajute enorm de mult.. iti pot recomanda chiar eu cateva carti destul de bune.

cum ar fi?

Posted

- C++ manual complet, Herbert Schild

- Totul despre C si C++, Kris Jamsa

- C++ pentru incepatori, vol I si II, Liviu Negrescu

Bine, nu imi aduc aminte exact numele si autorii, dar sunt pe aproape.

Posted (edited)
- C++ manual complet, Herbert Schild

- Totul despre C si C++, Kris Jamsa

- C++ pentru incepatori, vol I si II, Liviu Negrescu

Bine, nu imi aduc aminte exact numele si autorii, dar sunt pe aproape.

Multumesc , pentru C# sti cumva ?

Multumesc din nou.

Edited by awne
Sa-i multumesc :D
Posted (edited)
cum ar fi?

Poftim: GirlShare - Acest fisier nu exista.

Mirror: Limajul C.rar

O carte fundamentala, am citito de nenumarate ori, chiar o sa inveti.

Dar nu uita niciodata... programarea nu este numai un simplu script, iti trebuie neaparat o foaie si un pix langa tine :), nu in totdeauna te va ajuta calculatorul cand vine vorba de programare.

Cu bine,

Dark.

Edited by darkston3e

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