La negación C a nivel de bits crea una salida negativa: [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Qué hace el operador ~? 3 respuestas

Estoy intentando REALMENTE hacer girar los bits en una variable C int. Lo estoy haciendo así:

input = 15;

input = ~input;

printf("%d", input);

PERO SIEMPRE SE MUESTRA como-16. Debería ser0! Si15 esta escrito como1111por que esta volviendo10000?! ¡Esto es enloquecedor! ¿Puede alguien POR FAVOR ayudarme?

Respuestas a la pregunta(3)

Su respuesta a la pregunta