added explanation about bit shifting