Avatar billede pulsar Nybegynder
19. oktober 2004 - 21:42 Der er 12 kommentarer og
1 løsning

Sæt bit

Med

int t = 100;
int i = (t >> 6) & 1;

får jeg den 7 LSB værdi.

Men hvordan 'sætter' jeg den 7. LSB?

(Altså sætter den til 1 hvis den er 0)
Avatar billede arne_v Ekspert
19. oktober 2004 - 21:55 #1
v = v | (1 << 6);
Avatar billede pulsar Nybegynder
19. oktober 2004 - 22:15 #2
forklar lige..
Avatar billede arne_v Ekspert
19. oktober 2004 - 22:19 #3
1 << 6 giver binært 01000000

og | laver en bit vis or

resulatet er at den ønskede bit bliver sat
Avatar billede pulsar Nybegynder
19. oktober 2004 - 22:34 #4
skal det ikke være >> ?
Avatar billede arne_v Ekspert
19. oktober 2004 - 22:36 #5
Nej.

binært 01000000 >> 6 giver 1
1 >> 6 giver 0
1 << 6 giver binært 01000000
Avatar billede pulsar Nybegynder
19. oktober 2004 - 22:56 #6
hmm.

hvis jeg har værdien 17
int t = 17; //0001 0001

og gerne vil sætte LSB til 0 så jeg får værdien 16
//0001 0000

hvordan gør man det?
Avatar billede arne_v Ekspert
19. oktober 2004 - 23:01 #7
Så vil du ikke sætte bitten så vil du cleare bitten

t = t & ~(1 << 0);

bør gøre det
Avatar billede pulsar Nybegynder
19. oktober 2004 - 23:05 #8
ok.

og hvordan sætter man den igen, så man igen får 17?
Avatar billede arne_v Ekspert
19. oktober 2004 - 23:06 #9
t = t | (1 << 0);
Avatar billede arne_v Ekspert
19. oktober 2004 - 23:07 #10
Eksempel program:

public class Bits {
    public static int bitset(int v, int no) {
        return (v | (1 << no));
    }
    public static int bitclr(int v, int no) {
        return (v & ~(1 << no));
    }
    public static int bitget(int v, int no) {
        return ((v >> no) & 1);
    }
    public static void main(String[] args) {
        System.out.println(bitget(100,6));
        System.out.println(bitset(0,6));
        System.out.println(bitclr(17,0));
    }
}

eksempel output:

1
64
16
Avatar billede arne_v Ekspert
19. oktober 2004 - 23:07 #11
Bemærk ovenstående nummererer bittene 0..31 ikke 1..32 !
Avatar billede pulsar Nybegynder
19. oktober 2004 - 23:22 #12
jeg takker.

svar lige :-)
Avatar billede arne_v Ekspert
19. oktober 2004 - 23:24 #13
kommer her
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester