sql >> Database teknologi >  >> RDS >> Mysql

gemmer negativt tal i decimalfeltet i mysql-tabellen fra version 5.0.3

Så vidt jeg forstår, siger dokumentationen, at den ikke gemmer en bogstavelig "-" tegn , hvilket betyder, at den sandsynligvis nu gør, hvad de andre signerede HELTAL-felter altid har gjort, og at den i stedet gemmer en fortegnsbit for at angive negative tal.

Du kan stadig se et minustegn foran tallet, fordi det genereres af MySQL som et resultat af den tegnbit.

Hvis du ikke forstår fortegnsbitten, kan du overveje, hvordan en fortegnsbyte kan gemme tal fra -128 til 127, mens en byte uden fortegn kan gemme tal fra 0 til 255. Det skyldes, at en af ​​de 8 bits i et fortegnsnummer er bruges til at gemme +/- (1 er negativ, 0 er positiv), mens de resterende bits tilbyder tal op til 2^7 (-128 eller 127).

Så hvis for eksempel bits 1111 havde en fortegnsbit, ville de være lig med -7 (negativ+4+2+1), men hvis de var uden fortegn, ville de være lig med 15 (8+4+2+1). Det er stadig den samme mængde bits, der bliver gemt.

Du kan undre dig over, hvorfor den negative grænse i et tal med fortegn kan bruge den 8. bit, mens den positive grænse er begrænset til summen af ​​de 7 bit (1 mindre end den 8. bit). Dette skyldes, at 10000000 anses for at være både negativ og den 8. bit samtidigt, fordi dens repræsentation af -0 ellers er redundant med 00000000, som repræsenterer 0. Der er ingen forskel mellem negativt og positivt nul, så en negativ mest signifikant bit er altid værdien af den bit selv (men negativ).




  1. ColdFusion Parametrisering af en forespørgsel

  2. SSMS leveres nu med Azure Data Studio

  3. Top 'n' resultater for hvert søgeord

  4. INSERT-sætning i Oracle