22. oktober 2003 - 10:24Der er
12 kommentarer og 2 løsninger
Bit-vise operationer, hvorfor?
Jeg er i et ambitiøst øjeblik gået igang med en java-certificering, SCJP. Nu er jeg kommet så langt at jeg er stødt på "bit-vise operationer". Og mit problem er nu, at jeg finder det svært, meget svært at motivere mig selv til at komme igennem denne del af pensum. Jeg ville hade at skulle give op så tidligt, så her er mit spørgsmål:
Hvad skal man med bit-vise operationer? Hvad er lige det smarte ved bit-vise operationer?
Tjaa - du skal(måske) bruge bit-programmering hvis du skal tilgå andre enheder. Skal du f.eks. have fat i en vejrstation, en printer som ikke lige har en driver til, og gennerelt andre aksterne enheder, hvor du selv skal programmere interfacet over mod din application(gennem en I/O-port).
Men i daglig brug har man meget sjældent brug for at udføre bit-operationer.
Mit problem er sådan set ikke at lære at arbejde bit-vist, snarere at forstå at der skulle være en god grund til at gøre det, andet end selvpineri. Det forekommer at kræve meget,rigtig meget arbejde for selv ydmyge resultater.
Er det korrekt at man anvender bit-vise operationer, der hvor der ikke findes tilgængelige API'er, eksempelvis at kunne anvende en, for java, ukendt netværksprotokol?
Man kan ikke være en god Java programmør uden at kunne sætte en bestemt bit i en byte/int, checke om en bestemt bit er sat, cleare en bestemt bit og den slags.
hhmmm...... Jeg er helt på det rene med at det hører til for en ordentlig programmør at kunne dette, som en del af en grundliggende forståelse. Om ikke andet er det ihvertfald en del af certificeringen. ;-)
Det, jeg efterlyser, er det argument, som får mig til at tænke; bit-vise operationer, det er fedt, fordi..... bit-vise operationer er smarte fordi....
Du skal bruge bit operationer hvis du får opgaven:
læs X bytes øvrste 4 bit af første byte er en bit maske nederste 4 bit af første byte = en variabel a hvis bit 0 er sat i bit masken læs næste byte som variabel b1 hvis bit 1 er sat i bit masken læs næste byte som variabel b2 hvis bit 2 er sat i bit masken læs næste byte som variabel b3 hvis bit 3 er sat i bit masken læs næste byte som variabel b4
Prøv at tænke 'sæt' og sæt operationer istedet for 'bit-wise', så er det nemmere at gå til.
fx: bit 0: abbonnerer på BT-hverdage bit 1: abbonnerer på BT-søndag bit 2: skylder penge for abbonnementet.
Og så kan du meget hurting stryge listen over abbonenter igennem og finde dem der skal skrives en rykker til: if ( person.kundetype & 4 != 0 ) { // der skal sendes en rykker } eller evt individuelt: if ( person.kundetype & 5 == 5 ) { // der skal sendes en rykker for BT-hverdag } else if ( person.kundetype & 6 != 6 ) { // der skal sendes en rykker for BT-søndag }
Ok. Der kommer tilsyneladende ikke noget svar fra Jakoba. 25 til arne v, med tak for hjælpen, og 5 til vedikkebedre, for ulejligheden og linket.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.