4

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?

2
  • If you passed in 127, what would you expect to be returned? Commented Apr 29, 2011 at 22:37
  • Sounds like dec-to-bin conversion... Commented Apr 29, 2011 at 22:37

2 Answers 2

7

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
Sign up to request clarification or add additional context in comments.

1 Comment

+1, beat me to it. You can also build the values using |: Mon | Tue | Sun == 97.
4
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']

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.