Robert1995 Posted May 16, 2011 Report Posted May 16, 2011 (edited) Logica pe biti e simpla , chiar daca pare grea de inteles la inceput , tocmai am invat-o si eu in 10 de minute si am reusit si sa inteleg ce face 1 >> 2 in php pentru ca google nu e asa ' generos ' .In Fine , stiu ca e ceva banal , dar vreau sa invat si pe altii , mersi em inca o data.Daca stiati asta deja si vreti sa faceti pe destepti , sau poate vi se pare postul inutil nu ezitati sa frecati topicul .Numerele pe biti : 1 - > 00000000000000000000000000000012 - > 00000000000000000000000000000103 - > 00000000000000000000000000000114 - > 0000000000000000000000000000100// Sorry Dar asa e .5 = 101 = 2^2 + 1 6 = 110 = 2^2 + 27 = 111 = 2^2 + 2 + 18 = 1000 = 2^39 = 1001 = 2^3 + 1Credca daca priviti atenti va dati seama cum merg lucrurile .Eu am vrut sa invat despre " >> " in php , dupa ce am facut un for ( mai jos ) , mi-am dat seama cum merge , easy .<?php for($i = 1 ; $i <= 100 ; $i++){ echo $i." >> 2 - > "; echo $i >> 2; echo "<br/>"; }?>Explicatie <?php echo 1 >> 2 ; // arata 0 echo 2 >> 2 ; // arata 0 echo 3 >> 2 ; // arata 0 echo 4 >> 2 ; // arata 1 /* Explicatie , arata cu cati 'biti' e mai in stanga , sau in dreapta dupa 'parametru' ( nu stiu cum i se spune ) :'<<' , '>> ' . | 4 -> ... 100 3 -> ... 011 2 -> ... 010 | */?>Hope I helped Edit : Scuzati de Zero in plus din coada si mersi ca mi-ati zis redox si andrew, o seara buna Edited May 17, 2011 by Robert1995 Quote
Andrei Posted May 16, 2011 Report Posted May 16, 2011 (edited) Defapt numerele aratate de tine au cate un zero in coada in plus. Primul numar reprezinta doi, in cazul dat de tine (asta e doar un exemplu).Intr-o alta ordine de idei, operatiile >> << sunt operatii pentru biti, asa numitele operatii shift care reprezinta inmultirea/impartirea cu 2 de un numar k de ori specificat de tine. Edited May 16, 2011 by Andrei Quote
cmiN Posted May 17, 2011 Report Posted May 17, 2011 Ok, acum invata &, |, ~, ^ si sa lucrezi cu masti. Quote
begood Posted May 17, 2011 Report Posted May 17, 2011 (edited) Numerele pe biti : 1 - > 00000000000000000000000000000012 - > 00000000000000000000000000000103 - > 00000000000000000000000000000114 - > 00000000000000000000000000001005 - > 00000000000000000000000000001106 - > 00000000000000000000000000001117 - > 00000000000000000000000000010008 - > 00000000000000000000000000011009 - > 0000000000000000000000000001110Ai invatat gresit !De la 1 la 4 e corect.5 = 101 = 2^2 + 1 6 = 110 = 2^2 + 27 = 111 = 2^2 + 2 + 18 = 1000 = 2^39 = 1001 = 2^3 + 1O sa mai citesc din articol sa-ti mai corectez, daca e cazul.Atentie inca o data, odata invatat gresit ceva, e greu sa inveti "peste" corect.LE : "Hope I helped :-)" uhm..nope. Edited May 17, 2011 by begood Quote
em Posted May 17, 2011 Report Posted May 17, 2011 Daca tot ai in?eles asta î?i propun o problem?.int a=31337;cout<<a*9;Scrie-mi un cod echivalent (mai rapid ca ?sta). Quote
tiodr Posted May 17, 2011 Report Posted May 17, 2011 Daca tot ai in?eles asta î?i propun o problem?.int a=31337;cout<<a*9;Scrie-mi un cod echivalent (mai rapid ca ?sta).cout<<31337*9;asa? Quote
Patrunjel Posted May 17, 2011 Report Posted May 17, 2011 ^compilatorul face chestii de genu' asta singurel, nu e o optimizare a operatiei Omu se referea la o operatie (un grup de operatii, plm) pe biti, echivalenta. Quote
Robert1995 Posted May 17, 2011 Author Report Posted May 17, 2011 (edited) @begood mi-am dat seama ca am gresit , nu stiu pe ce site m-am uitat cand am invatat , arata si un 0 la sfarsit , dar am dat clean la history ieri , in fine sorry si eu azi la scoala mi-am dat seama .am editat@em . Hmm habar nu am , intentia nu e asta , vroiam sa invati operatori pentru php nu olimpiada la informatica sau altceva , am incercat 20 de minute cu" | , & , shifterii " , diferite 'abordari ' , 250749 era cea mai apropiata valoare la care am ajuns Edited May 17, 2011 by Robert1995 Quote
sulea Posted May 17, 2011 Report Posted May 17, 2011 Daca tot ai in?eles asta î?i propun o problem?.int a=31337;cout<<a*9;Scrie-mi un cod echivalent (mai rapid ca ?sta).mov a,31337 -> valoarea de inmultitmov b,a -> salvam a in bshl a,3 -> o inmultim cu 8 (shl cu 3 inseamna inmultire cu 2^3; shl cu 4 ar fi insemnat inmultire cu 2^4)add a,b -> noi aveam nevoie de inmultire cu 9, deci la rezultatul a*8 mai adaugam valoarea initialanu stiu daca este mai rapid, dar face acelasi lucru cu 31337*9 Quote
em Posted May 17, 2011 Report Posted May 17, 2011 @sulea ai zis bine. congratz.(G?sisem întrebarea asta prin interviurile de angajare de la Google).cout<<(nr>>3)+nr; Quote