Imagine this as an analog clock. In the present watch, the times "sixty-five" (55) and "five-seven" (-5) are identical. This is simply the problem of your definition, the clock itself does not know your definition and works round and round ... The same thing with the processor. Look at the following "CPU-clock":

I chose a 4-bit clock, but the principle is the same for every other group of bits (BYTE, WORD, DWORD, etc.).
The carry flag will be set after the clock has jumped from 15 to 0. This is in this case a flag for unsigned overflow.
The overflow flag will be set after the clock has jumped from 7 to -8. It blocks the signed overflow.
The sign flag denotes a value that can be interpreted as a negative number.
The behavior of the flags is slightly different if you think from below:

source share