UNIX, Linux, Programare, Scripting, Retele
unix, linux, programare, script, hosting, server, retele
Lista Forumurilor Pe Tematici
UNIX, Linux, Programare, Scripting, Retele | Reguli | Inregistrare | Login

POZE UNIX, LINUX, PROGRAMARE, SCRIPTING, RETELE

Nu sunteti logat.
Nou pe simpatie:
carmenitza 24 ani
Femeie
24 ani
Ialomita
cauta Barbat
24 - 48 ani
UNIX, Linux, Programare, Scripting, Retele / C / C# / C++ / Shifting operator's :)  
Autor
Mesaj Pagini: 1
!_30
near connection ..

Din: nowhere ?
Inregistrat: acum 19 ani
Postari: 47
Am si eu o nedumerire mare : in legatura cu acesti zici shifting operator's.

Shifting is much faster than actual multiplication (*) or division (/) by 2. So if you want fast multiplications or division by 2 use shifts.

Dar nu-mi dau seama cum functioneaza faza

lucreaza cuy chestii de genu : x<<2 etc.. sau x>>2 .. dar nu-mi dau seama.De exemplu as vrea cu acesti shiting opearor's ( daca as siti cum ) , sa trasnform un numar in binar (  ca ei sunt ceva ca si cum as imparti la noi ) , cand merge e 1 , cand nu merge e 0 sau ceva de genu..Dar nu ma prind


_______________________________________


pus acum 19 ani
   
Shocker
Moderator

Inregistrat: acum 20 ani
Postari: 12
Nu stiu daca in C sintaxa e X SHL/SHR Y, dar ideea e asta:
Poti sa dai X SHL Y (Shift Left) sau X SHR Y (Shif Right) ca sa 'shift-ezi' X-u cu Y biti.
Exemple:
- avem 4 ... daca dam 4 SHL 1 obtinem 8 (la fel ca 4*2)
- avem 4 ... daca dam 4 SHL 2 obtinem 16 (la fel ca 4*4)
- avem 4 ... daca dam 4 SHR 1 obtinem 2 (la fel ca 4 div 2)
- avem 4 ... daca dam 4 SHR 2 obtinem 1 (la fel ca 4 div 4)

Lucrand cu numere binare:
- avem 111 (=7) ... daca dam 111 SHL 1 obtinem 1110 (=14)
- avem 111 (=7) ... daca dam 111 SHL 2 obtinem 11100 (=28)

- avem 111 (=7) ... daca dam 111 SHR 1 obtinem 11 (=3)
- avem 111 (=7) ... daca dam 111 SHR 2 obtinem 1 (=1)

Modificat de Shocker (acum 19 ani)


_______________________________________
Portal SkullBox
SkullBox Forum
IP Finder and web browser details revealer


pus acum 19 ani
   
!_30
near connection ..

Din: nowhere ?
Inregistrat: acum 19 ani
Postari: 47
Un exemplu concret gen : transformati un unsigned char ( pe 8 biti ) intr-un numar binar.II dai ceva de genu 128 si-ti da 10000000 .

Practic ideea e putin sucita


_______________________________________


pus acum 19 ani
   
suri
Pe lista neagră

Din: vizuina
Inregistrat: acum 20 ani
Postari: 92
!_30, inteleg ca vrei sa convertesti unsigned 128 intr-un sir de 8 caractere de "1" sau "0".
Fie un procesor pe 8 biti (ca sa-mi fie si mie mai simplu). Acumulatorul (A) are deci 8 pozitii: xxxxxxxx  Prin electronica procesorului la stanga lui A exista un registru (C) care are 1 bit. Acel registru este tocmai "indicatorul de depasire - carry flag" . Deci dispunerea este asa: Cxxxxxxxx
Cand tu incarci numarul tau (acel 128) in C,A situatia este asa:
Cxxxxxxxx
010000000
Facand "Shift Logical Left" (SHL) situatia devine asa:
Cxxxxxxxx
100000000
Deci primul bit este trecut in registrul/indicatorul C, iar in coada acumulatorului intra (fortat) un 0.
Indicatorul C este testat, si daca contine 1, in sirul de iesire pui caracterul "1", iar daca contine 0, pui caracterul "0". Dupa un ciclu de 8 SHL ai toate cele 8 caractere din sir.

De ce asa ?  Pur si simplu tu nu poti testa decat indicatorii. Deci ca sa vezi daca un bit este 0 sau 1 trebuie sa pozitionezi un indicator. Pentru numere unsigned, ca in exemplul cerut de tine este cazul sa pozitionezi/testezi indicatorul C.

Procesoarele de tip x86 au 6 idicatoare/flags.
V. si


_______________________________________
Portal SkullBox
SkullBox Forum
IP Finder and web browser details revealer


pus acum 19 ani
   
Pagini: 1  

Mergi la