https://sukhvinder.co.uk/backtobasics-java-bitwise-shift-operators/