Para una secuencia binaria de X bits, hay 2 ^ x valores posibles.
Usando enteros sin signo para representarlos, tienes el conjunto de 0, 1, ... (2 ^ x) -1. Si uno quisiera cambiar efectivamente los valores hacia abajo para tener mitad negativo y mitad positivo, restaría 2 ^ (x-1) (que es la mitad del rango) de cada valor, lo que le da 0 - 2 ^ (x-1) , ...., (2 ^ x) -1 - (2 ^ (x-1)).
Reorganizando el último término en 2 ^ x- 2 ^ (x-1) - 1 y reconociendo que y ^ x - y ^ (x-1) = y ^ (x-1), entonces tienes tu rango , - (2 ^ (x-1)) ... 2 ^ (x-1) -1.
Esto se hace en la implementación negando el MSB, que en virtud de su valor de posición es la mitad del rango.