There is no &quot;two&#x27;s complement&quot; in C. The representation of signed integers is implementation-defined. This is one reason why C has undefined behavior.<p>Imho it does not make sense anymore, since practically all hardware uses two&#x27;s complement these days. If the standard would declare two&#x27;s complement for signed integers, then shift-left would always have defined behavior, for example.