Jump to content
Robert1995

Logica pe biti pe scurt si simplu

Recommended Posts

Posted (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 - > 0000000000000000000000000000001

2 - > 0000000000000000000000000000010

3 - > 0000000000000000000000000000011

4 - > 0000000000000000000000000000100

// Sorry Dar asa e .

5 = 101 = 2^2 + 1

6 = 110 = 2^2 + 2

7 = 111 = 2^2 + 2 + 1

8 = 1000 = 2^3

9 = 1001 = 2^3 + 1

Credca 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 by Robert1995
Posted (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 by Andrei
Posted (edited)

Numerele pe biti :

1 - > 0000000000000000000000000000001

2 - > 0000000000000000000000000000010

3 - > 0000000000000000000000000000011

4 - > 0000000000000000000000000000100

5 - > 0000000000000000000000000000110

6 - > 0000000000000000000000000000111

7 - > 0000000000000000000000000001000

8 - > 0000000000000000000000000001100

9 - > 0000000000000000000000000001110

Ai invatat gresit !

De la 1 la 4 e corect.

5 = 101 = 2^2 + 1

6 = 110 = 2^2 + 2

7 = 111 = 2^2 + 2 + 1

8 = 1000 = 2^3

9 = 1001 = 2^3 + 1

O 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 by begood
Posted (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 by Robert1995
Posted
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 inmultit

mov b,a -> salvam a in b

shl 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 initiala

nu stiu daca este mai rapid, dar face acelasi lucru cu 31337*9

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