clear if decrese size
don't read out of range
boundary check for extract
refactor shiftLeftBit