@Orth - sorry I missed the forst question. At the digital level, it is definitely an increment. It will go throw the increment register, rather than even use a seperate register as a place holder to do the addition - way more optimized. 1 assembly instruction, instead of 3.
But aside from it's implementation - even just looking at the digital math, if your program says that (0111 1111) = 127 and you add one to that ... digitally, the next number is (1000 0000). With an unsigned byte, that equals 128, but if it's a signed integer type, then it equals -128. So that's my entire point, I assumed it would be 129, and then 128 + 1 = 129 and so on (1000 0000) + (0000 0001) = (1000 0001). But if you're using two's compliment to represent negatives (which every C-based language does), then other than the odd flip from the MAX positive to the MIN negative when the MSB bit flips, every thing works out as expected, because -128 + 1 = -127 (1000 0000) + (0000 0001) = (1000 0001)
It's actually a very cool and useful system - but it does have the pitfall when you can't tell your runtime, that you want it to be signed versus unsigned. That was a major drawback for java for me compared to C++ when Java was just a baby (hopefully, that's no longer an issue, but I haven't ever checked to see if they changed it, I just started programming C# instead - which does have unsigned integer types)