Skip to content

Instantly share code, notes, and snippets.

@thlorenz
Created March 31, 2015 19:12
Show Gist options
  • Save thlorenz/ac1856eae39762869300 to your computer and use it in GitHub Desktop.
Save thlorenz/ac1856eae39762869300 to your computer and use it in GitHub Desktop.
Outlines how binary flags work.

Scriptie Talkie Log

In case this doesn't work in your browser.

Outlines how binary flags work.

Script

var alive = parseInt('0001', 2);
var kicking = parseInt('0010', 2);
var alive_kicking = parseInt('0011', 2);
var dead = parseInt('0100', 2);

// removing a flag
alive_kicking & ~alive;   // kicking
alive_kicking & ~kicking; // alive

// adding flag
alive | kicking;  // alive and kicking

// adding already existing flag
alive_kicking | alive; // still alive and kickin

// checking 'has flag'

// alive and kicking has alive?
alive_kicking & alive;

// alive kicking has dead?
alive_kicking & dead;

Scriptie Talkie Output

1: var alive = parseInt('0001', 2);
+  alive: 1
 
 2: var kicking = parseInt('0010', 2);
+  kicking: 2
 
 3: var alive_kicking = parseInt('0011', 2);
+  alive_kicking: 3
 
 4: var dead = parseInt('0100', 2);
+  dead: 4
 
 5: 
 6: // removing a flag
 7: alive_kicking & ~alive;   // kicking
=> 2
 
 8: alive_kicking & ~kicking; // alive
=> 1
 
 9: 
10: // adding flag
11: alive | kicking;  // alive and kicking
=> 3
 
12: 
13: // adding already existing flag
14: alive_kicking | alive; // still alive and kickin
=> 3
 
15: 
16: // checking 'has flag'
17: 
18: // alive and kicking has alive?
19: alive_kicking & alive;
=> 1
 
20: 
21: // alive kicking has dead?
22: alive_kicking & dead;
=> 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment