Bits afhalen

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Hoi,

Als je een bit array hebt, dan kun je op deze manier bits bij elkaar optellen:
[JS]allowed |= supportedType;[/JS]

Maar hoe kun je ze van elkaar afhalen? Dit lijkt me namelijk niet de meest makkelijke methode...
[JS]allowed = ~allowed;
allowed |= unsupportedType;
allowed = ~allowed;[/JS]

En deze methode werkt niet, omdat 'unsupportedType' niet altijd voorkomt.
[JS]allowed -= unsupportedType;[/JS]
 
Laatst bewerkt:
bits bij elkaar optellen en aftrekken? kun je iets specifieker en nauwkeuriger uitleggen wat je precies wilt en om welke programmeertaal het gat?
 
bits bij elkaar optellen en aftrekken? kun je iets specifieker en nauwkeuriger uitleggen wat je precies wilt en om welke programmeertaal het gat?

Stel je hebt var1 = 1
var2 = 2
var3 = 4
var4 = 8

Dan kun je ze bij elkaar optellen door
var4 |= var2 //geeft 10.
Vervolgens kun je bijvoorbeeld kijken of var2 in var4 zit door
if (var4 & var2) {}//true als var4 in var2 zit (dus bijvoorbeeld var4 = 10 of 11)

En dit staat in het javascript forum dus het zal wel javascript zijn...
 
Laatst bewerkt:
Well, bitwise operatoren vond ik altijd al een beetje raar in een taal als Javascript. Then again, je kan er wel leuke dingen mee doen. Just Sayin'.

In ieder geval, | is de bitwise OR, dus 1 van de 2 bits waar het om gaat moet op 1 staan om een 1 te krijgen.
Code:
8 4 2 1

1 0 0 0   (=8)
0 0 1 0   (=2)
--------   |  (bw OR)
1 0 1 0   (=10)
Om het tegenovergestelde te krijgen, dus bijvoorbeeld van 10 naar 8 gaan, gebruik je ^ (XOR). Dit is zoiets als, alleen een 1 als ze verschillend zijn. Bijvoorbeeld:
Code:
8 4 2 1

1 0 1 0   (=10)
0 0 1 0   (=2)
--------   ^  (bw XOR)
1 0 0 0   (=8)


Voor de lol: typ eens in je adres-balk:
javascript: alert(8 | 2); alert(10 ^ 2);
als t goed is krijg je 2 alerts: de 1e is 10, de 2e is 8.




Leesvoer: wiki



:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan