I am trying to prepare for technical interviews and I noticed a few practice questions involved bit masking and bit shifting. I am unfamiliar with these concepts. I understand that if you are using half of a byte and want to leave the other half available you can mask the 4 bits you want to use, but I am still fairly confused about how this might be easily understood or applied to a coding problem. If someone has sufficient knowledge or some resource that explains this in very simple terms (preferably in Java) I would greatly appreciate it. Thanks!