Reputation: 625
Given the following scale:
Mon = 64, Tue = 32, Wed = 16, Thu = 8, Fri = 4, Sat = 2, Sun = 1
How would you create a function that is passed an integer to decode the corresponding days of the week?
For example, say the value 127 was passed, how can you determine what days are included in that value?
Upvotes: 4
Views: 2320
Reputation: 185913
function dec2bin(n) {
return n.toString(2).split('');
}
And then:
dec2bin(127) // returns ['1', '1', '1', '1', '1', '1', '1']
dec2bin(38) // returns ['1', '0', '0', '1', '1', '0']
Upvotes: 4
Reputation: 1461
Sounds like a bitmask. You can read about bitmasks here; http://en.wikipedia.org/wiki/Mask_%28computing%29
Sunday would be the 1st bit, Sat the 2nd, etc, Mon the 7th. To see if a day is included, use a binary AND.
var listOfDays = 127;
var hasSun = listOfDays & 1;
var hasSat = listOfDays & 2;
var hasFri = listOfDays & 4;
// etc
Upvotes: 7