O que o ~ 0 faz?

O ~ 0 significa sua inversão 000000000 a 1111111111?

printf("Check: %i", ~0);

O printf resulta em -1, e é por isso que estou confuso.
O -1 essencialmente significa a mesma coisa que 11111111111111111 bits?