tziuka Posted February 7, 2012 Report Posted February 7, 2012 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! Quote
em Posted February 7, 2012 Report Posted February 7, 2012 P?i întelegi ce face operatorul de shiftare "<<" si & (adica stii diferenta intre & si &&) ? Quote
tziuka Posted February 7, 2012 Author Report Posted February 7, 2012 chiar asta e ca nu pricep ce face operatorul asta:-?? cum lucreaza cu la nivel de bit bitii.. Quote
tziuka Posted February 7, 2012 Author Report Posted February 7, 2012 am compilat programul si am vazut ca face transformarea numerelor in binar, dar nu inteleg logica cu operatorul "<<" si ce-i cu m =1 ila?? Quote
cifratorul Posted February 8, 2012 Report Posted February 8, 2012 iti era greu sa afisezi pe ecran acel m sa vezi ce valoare are......in ziua de azi se pare ca toti vor o mura cu omega 3 deja mestecata in gura... Quote
Zamolxis666 Posted February 8, 2012 Report Posted February 8, 2012 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. Quote
cmiN Posted February 8, 2012 Report Posted February 8, 2012 @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 ? Quote
tziuka Posted February 8, 2012 Author Report Posted February 8, 2012 Multumesc mult baieti, mi-ati fost de mare ajutor... se vede ca stiti cum sta treaba cu programarea!! Quote
Starker Posted February 8, 2012 Report Posted February 8, 2012 Totusi puteai afla si daca dadeai un cout<<m; de proba si pe foaie vedeai cum sta treaba. Porgramarea nu inseamna doar calculator, mai trebuie si putina foaie si creion. Bafta ! Quote
darkston3e Posted February 9, 2012 Report Posted February 9, 2012 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. Quote
awne Posted February 10, 2012 Report Posted February 10, 2012 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? Quote
Nytro Posted February 10, 2012 Report Posted February 10, 2012 - C++ manual complet, Herbert Schild- Totul despre C si C++, Kris Jamsa- C++ pentru incepatori, vol I si II, Liviu NegrescuBine, nu imi aduc aminte exact numele si autorii, dar sunt pe aproape. Quote
awne Posted February 10, 2012 Report Posted February 10, 2012 (edited) - C++ manual complet, Herbert Schild- Totul despre C si C++, Kris Jamsa- C++ pentru incepatori, vol I si II, Liviu NegrescuBine, nu imi aduc aminte exact numele si autorii, dar sunt pe aproape.Multumesc , pentru C# sti cumva ?Multumesc din nou. Edited February 10, 2012 by awne Sa-i multumesc :D Quote
Nytro Posted February 10, 2012 Report Posted February 10, 2012 In limba romana vazusem ceva, dar sunt multe carti si scumpe (daca le iei pe toate). Si mai era o carte, dar era mai veche si nu foarte utila.Eu incepusem "Visual C# - Step by step.pdf": Visual C# - Step by step.pdf - Speedy Share - upload your files hereE cam "lame" la inceput, dar inveti multe chestii utile. Quote
darkston3e Posted February 10, 2012 Report Posted February 10, 2012 (edited) cum ar fi?Poftim: GirlShare - Acest fisier nu exista.Mirror: Limajul C.rarO 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 February 10, 2012 by darkston3e Quote