Soweit ich weiß, ist es dem Prozessor an sich egal, womit er rechnet (zumindest bei Prozessoren, die negative Werte als Zweierkomplement darstellen). Für den Prozessor ist in einer 32-Bit-Variable der Wert -2 gleich dem Wert 4294967294. Das heißt, wenn ich von einer Variable, die 0 ist, zwei abziehe, kommt immer der Wert 0xFFFFFFFE raus, bei signed entspricht der Wert -2 und bei unsigned 4294967294. Nur, wenn man den Wert mit einem anderen vergleicht, muss der Prozessor wissen, ob es signed oder unsigned ist, dazu benutzt man z. B. bei unsigned die Sprungbefehle "ja" (jump if above) und "jb" (jump if below), um herauszufinden, ob der erste der gerade verglichenen Befehle größer bzw. kleiner als der zweite ist. Bei signed würde man eben "jg" (jump if greater) und "jl" (jump if less) benutzen.
An sich ist es also immer der gleiche Wert, die Unterschiede resultieren erst aus den Vergleichen, würde ich behaupten (wobei ich mich auch nur mit x86-Prozessoren beschäftigt habe).
PS: Natürlich gibt es weitere spezielle Befehle für vorzeichenbehaftete Zahlen, mit denen kann man z. B. eine 8-Bit-Zahl auf 16 Bit erweitern und dabei den Wert behalten, auch wenn sie negativ und damit im Zweierkomplement dargestellt ist.
PPS: Nagelt mich hierdrauf nicht fest.