The bitwise representation is not dictated by the C standard.
Actually it is, as you say below...
Either two's complement, ones complement or sign/magnitude
is allowed.
And as it is implementation-defined, so the implementation must
document its choice.
It's a little ambiguous whether the one choice applies to all
signed integer types or each signed type can have a different
option.
Note that these are not the only possible representations
in general. For instance, an implementation is not free
to implement wide integer types with a normalised floating
point representation, even though it might be practical
to do so.
For this reason, the common minimum is indicated by *_MIN
and *_MAX macros.
They exist primarily because there is no other way for an
implementation to test the width of an integer in the
presence of potential padding bits.
Also note that an implementation with INT_MIN == -32767 may
still be using two's complement representation under C99.