Representação de números negativos em C?

Como C representa números inteiros negativos?

É pela representação do complemento de dois ou usando o MSB (bit mais significativo)?

-1 em hexadecimal éffffffff.

Então, por favor, esclareça isso para mim.