Bitwise operators are very "low-level". You shouldn't be thinking in terms of them, ideally. In programming, you should strive to describe what you would like done and not how to do it. There's an interesting, somewhat tangential discussion here http://latentflip.com/imperative-vs-declarative/