各ボタンごとの 得られる値が ↑:1 ↓:2 ←:4 →:8 …と倍々になっているのも 同時押しを考慮した値だからと思えば この仕組みは難しくはないです。