sql >> Databáze >  >> RDS >> Mysql

ukládání záporného čísla do dekadického pole mysql tabulky od verze 5.0.3

Z toho, co jsem pochopil, dokumentace říká, že nebude ukládat doslov "-" znak , což znamená, že pravděpodobně nyní dělá to, co ostatní pole INTEGER se znaménkem vždy dělala a místo toho ukládá znaménkový bit k označení záporných čísel.

Stále před číslem vidíte znaménko minus, protože je generováno MySQL jako výsledek tohoto bitu znaménka.

Pokud nerozumíte bitu se znaménkem, můžete zvážit, jak může bajt se znaménkem ukládat čísla od -128 do 127, zatímco bajt bez znaménka může ukládat čísla od 0 do 255. Je to proto, že jeden z 8 bitů v čísle se znaménkem je používá se k uložení +/- (1 je záporná, 0 je kladná), zatímco zbývající bity nabízejí čísla až 2^7 (-128 nebo 127).

Pokud by tedy například bity 1111 měly znaménkový bit, byly by rovny -7 (záporné+4+2+1), ale pokud by byly bez znaménka, byly by rovny 15 (8+4+2+1). Ukládá se stále stejné množství bitů.

Možná se divíte, proč může záporná mez v čísle se znaménkem používat 8. bit, zatímco kladná mez je omezena na součet 7 bitů (o 1 méně než 8. bit). Je to proto, že 10000000 je považováno za záporný i 8. bit současně, protože jeho reprezentace -0 je jinak redundantní s 00000000, což představuje 0. Neexistuje žádný rozdíl mezi zápornou a kladnou nulou, takže záporný nejvýznamnější bit je vždy hodnotou tohoto bitu samotného (ale negativního).




  1. MySQL - výběr v blízkosti prostorového bodu

  2. Jak importovat / obnovit tabulky MySql pomocí PHP

  3. zvýšit číslo řádku, když se změní hodnota pole v Oracle

  4. Jak povolit INNODB v mysql