NO, since it holds the SIGN bit. If you assign a 32 bit quantity to
an int, if the sign bit is set in the unsigned right hand side, the
integer becomes negative, that is all.
If we have an unsigned long long FF FF FF FF 00 00 00 00,
the high part will be -1.
I'm not sure I understand this. When you say the "sign bit is set in
the unsigned right hand side", presumably you are talking about
assigning to a signed 32-bit integer type from an unsigned integer
type of longer width? In this case there is no sign bit in the
unsigned type but it is possible that the bit corresponding to the
sign bit is, in the unsigned representation, either a value bit or a
padding bit.
It doesn't much matter which case it is, if the integer value of the
unsigned type is not in the range of values representable by the
32-bit integer type to which you are assigning, then as far as I can
see the result is implementation-defined.
If the bit corresponding to the sign bit of a 32-bit integer is a
value bit in the corresponding unsigned type, then as the postive
values of the integer type must have the same representation as those
of the unsigned type, the value bit that the sign bit corresponds to
must represent a higher power of 2 than any of the value bits in the
signed integer type. If this bit is indeed a value bit and is set in
the unsigned type then the value represented by the unsigned type
cannot be a valid value for the signed type.