An int
, будь то со знаком или unsigned
, представлен серией битов, таких как
B1B2 ... Bn
, где
Bi ∈ {0;1}
теперь самое большое представимое unsigned
int
выглядит как
1111...1
, однако, как значение со знаком, -1 представляется
1111...1
также
так, 1111 ... 1 == 1111 ... 1 верно. Преобразование в unsigned
не изменило никаких значений, оно меняет способ восприятия данного значения. И с точки зрения памяти представление 2 ^ (32-1) и -1 фактически один и тот же чувак, одетый в разные одежды.