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