Mysql
 sql >> Baza danych >  >> RDS >> Mysql

przechowywanie liczby ujemnej w polu dziesiętnym tabeli mysql od wersji 5.0.3

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).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykonywanie zapytania MySQL SELECT * równolegle

  2. Połączyć dwa zapytania, aby sprawdzić duplikaty w MySQL?

  3. Zmień nazwę Laravela created_at i updated_at

  4. Składnia MySQL dla Dołącz do aktualizacji

  5. nodeJS zwraca wartość z wywołania zwrotnego