|
Sva početnička pitanja Sva početnička pitanja bi trebala da se postavljaju u ovom forumu, a ako se pretvori u kvalitetnu diskusiju interesantnu svima - prebacićemo je u odgovarajući forum. Molimo "znalce" da ne omalovažavaju početnike, ako žele da pomognu svi ćemo biti zahvalni, ako ne žele, neka preskoče ovaj forum. |
|
Alati teme | Način prikaza |
30. 10. 2007. | #11 |
I'm a PC too.
Wrote a book
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
|
Ma.. To beše čisto razumevanja radi (pošto je Gruja već dao primer sa pomeranjem), a i moje znanje C je.. sećanje
__________________
Commercial-Free !!! |
30. 10. 2007. | #12 |
Goran Pilipović
Sir Write-a-Lot
|
... od pre jedno 15 godina
već sam odavno zaboravio na ove fensi "shift" izraze.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
30. 10. 2007. | #13 |
Milan Cvejic
Wrote a book
|
haha... jbte, i mene ste zbunili...
Da ti ne pishem detaljno, evo link pa pogledaj: http://www.vipan.com/htdocs/bitwisehelp.html Tu je sve lepo objasnjeno... Poenta price je da ti koriscenjem bitwise operatora dobijash neku drugu vrednost u registru... Dakle treba da znash logicke operacije AND, NOT, OR i XOR. e sada recimo imash broj 64 to je osam keceva: 11111111 i imash masku koja je 63 to je sedam keceva i nula: 11111110 i ukoliko uradish XOR opet cesh da dobijesh 64 iliti 11111111 e sada ti rece da ti treba komplement... koji potpuni ili nepotpuni?!? nepotpuno komplementiranje je u stvari negacija dakle koristicesh ~ a za potpuni komplement samo cesh na to sve da dodash 1...
__________________
http://weevify.com |
30. 10. 2007. | #14 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
|
30. 10. 2007. | #15 |
Milan Cvejic
Wrote a book
|
u jbte... da da da... hahaha... kakav sam kreten... sorry osam keceva je 255 haha... 1000000 je 64... zajebo sam se...
Sorry ponovo...
__________________
http://weevify.com |
30. 10. 2007. | #16 |
Ivan Dilber
Sir Write-a-Lot
|
al ste ga iskomplikovali....
sve se svodi na ono sto je gruja vec napisao: ako neku vrednost A XOR-ujes sa nekom maskom (nizom bita), binarno gledano na pozicijama gde je u maski 1, u rezultatu ce ta pozicija da ima invertovanu vrednost iz A, a tamo gde je u maski 0 nista se nece promeniti... znaci tako mozes da togglujes vrednosti nekih bitova u flagovima, ako su upaljeni ugasis ih i obrnuto (odnosno invertujes im vrednost, matematicki gledano). Znaci XOR je za toggle, ako zelis da upalis neki bit pomocu maske onda koristis OR, ako zelis da ga ugasis onda koristis AND sa invertovanom maskom... i tako ti rade ti racunari, prosto btw, ako ti i dalje nije sasvi leglo kako ovo radi, otvori windows kalkulator, prebaci ga u scientific mod i igraj se malo sa binarnim brojevima... kroz praksu se najbolje kapira..
__________________
Leadership is the art of getting people to want to do what you know must be done. |
30. 10. 2007. | #17 |
profesionalac
Professional
|
Off Topic: Ko nije radio sprajtove na Spekiju ili Atariju ST ne sme da pricha o bit-maskama, od sad pa nadalje |
30. 10. 2007. | #18 |
emperor Selassie
Grand Master
|
E sad mi je delimično jasno: Ja ne mogu samo nad onim delom maske koji je obeležen jedinicama da vršim operaciju već nad ulaznim podatkom i celom maskom, zato mora ^ a ne ~ ... tako?
E sad još pravljenje maski... ja sam razumeo da se uzmu sve nule, pa se doda n broj jedinica pa se sve to pomera za pomeraj p i kako se pomera tako se dodaju nule s desne strane, right? I to radi ovaj kod: maska = ~(~0 << n) << p; Šta npr. raditi kad između jedinica treba da imam x nula u maski? :P npr. 000110100 Kako to radi? Jel može neko ovu liniju gore (bold) da mi objasni do detalja (mi smo koristili ovaj oblik... tačnije, u jednom zadatku smo koristili y = x >> p-n+1; pa onda maska = ~(~0<<n); za neko poravnjanje s desne strane)? @LiquidBrain: Sad ću da pogledam taj link Poslednja izmena od Nemanja Avramović : 30. 10. 2007. u 19:12. |
30. 10. 2007. | #19 |
Goran Pilipović
Sir Write-a-Lot
|
Prvo sto treba da uradis je da dobro skapiras sta je AND, OR, XOR, NOT...
AND: 1 i 1 = 1, sve ostalo daje 0 OR: 0 i 0 = 0, sve ostalo daje 1 ... Pa onda tako da odlucis koji ces operator da koristis. Pored toga treba da znas precedence, odnosno kojim redom se izvrasavaju operacije
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
30. 10. 2007. | #20 |
emperor Selassie
Grand Master
|
Dakle, ako sam lepo shvatio, da bi dobio recimo masku 000110100 treba da odradim:
~(~(~(~0 << 2) << 1) << 1) << 2) ...znači imali bismo: 000000000000 početna vrednost 111111111111 ~ izvršeno nad prethodnom maskom 111111111100 << 2 izvršeno nad prethodnom maskom 000000000011 ~ izvršeno nad prethodnom maskom 000000000110 << 1 izvršeno nad prethodnom maskom 111111111001 ~ izvršeno nad prethodnom maskom 111111110010 << 1 izvršeno nad prethodnom maskom 000000001101 ~ izvršeno nad prethodnom maskom 000000110100 << 2 izvršeno nad prethodnom maskom Tako? |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Bitwise operacije + Osnovne strukture podataka | MrSteel | Flash | 5 | 12. 05. 2007. 21:24 |