Kurz gesagt, bei "signed" wird ein Bit verwendet um zu signalisieren ob die Zahl ein Vorzeichen hat, die restlichen Bits sind die Zahl selbst. Bei "unsigned" gibt es kein Vorzeichen und alle Bits gehören zur Zahl. Das bedeutet das ein "signed" den Wert halbiert, dafür hast du aber zur Hälfte negative und zur Hälfte positive Zahlen, die 0 in der Mitte.
Hier ist eine Liste an häufigen Datentypen und ihr Wert als "signed" und "unsigned".
Datentyp Signed Unsigned
--------------------------------------------------------------------
char -128 bis 127 0 bis 255
short -32,768 bis 32,767 0 bis 65,535
int -2,147,483,648 bis 2,147,483,647 0 bis 4,294,967,295
long -2,147,483,648 bis 2,147,483,647 0 bis 4,294,967,295