Z tego, co rozumiem, dokumentacja mówi, że nie będzie przechowywać dosłownego „-” znak , co oznacza, że prawdopodobnie robi teraz to, co inne pola typu INTEGER ze znakiem zawsze robiły i przechowuje bit znaku w celu oznaczenia liczb ujemnych.
Nadal widzisz znak minus przed liczbą, ponieważ jest on generowany przez MySQL w wyniku tego bitu znaku.
Jeśli nie rozumiesz bitu znaku, możesz rozważyć, w jaki sposób bajt ze znakiem może przechowywać liczby od -128 do 127, podczas gdy bajt bez znaku może przechowywać liczby od 0 do 255. Dzieje się tak, ponieważ jeden z 8 bitów w liczbie ze znakiem jest używane do przechowywania +/- (1 jest ujemne, 0 jest dodatnie), podczas gdy pozostałe bity oferują liczby do 2^7 (-128 lub 127).
Na przykład, gdyby bity 1111 miały bit znaku, byłyby równe -7 (ujemne+4+2+1), ale gdyby były bez znaku, miałyby wartość 15 (8+4+2+1). Wciąż jest przechowywana ta sama liczba bitów.
Możesz się zastanawiać, dlaczego ujemne ograniczenie w liczbie ze znakiem może używać ósmego bitu, podczas gdy dodatnie ograniczenie jest ograniczone do sumy 7 bitów (1 mniej niż ósmy bit). Dzieje się tak, ponieważ 10000000 jest uważane za zarówno ujemny, jak i ósmy bit jednocześnie, ponieważ jego reprezentacja -0 w przeciwnym razie jest zbędna z 00000000, która reprezentuje 0. Nie ma różnicy między ujemnym i dodatnim zerem, więc ujemny najbardziej znaczący bit jest zawsze wartością tego bitu (ale ujemnego).