sql >> Base de Datos >  >> RDS >> Mysql

almacenar un número negativo en el campo decimal de la tabla mysql a partir de la versión 5.0.3

Por lo que entiendo, la documentación dice que no almacenará un literal "-" carácter , lo que significa que probablemente ahora esté haciendo lo que los otros campos INTEGER con signo siempre han hecho y, en su lugar, está almacenando un bit de signo para indicar números negativos.

Sigue viendo un signo menos antes del número porque MySQL lo genera como resultado de ese bit de signo.

Si no comprende el bit de signo, puede considerar cómo un byte con signo puede almacenar números de -128 a 127, mientras que un byte sin signo puede almacenar números de 0 a 255. Esto se debe a que uno de los 8 bits en un número con signo es se utiliza para almacenar +/- (1 es negativo, 0 es positivo), mientras que los bits restantes ofrecen números hasta 2^7 (-128 o 127).

Entonces, por ejemplo, si los bits 1111 tuvieran un bit de signo, equivaldrían a -7 (negativo+4+2+1), pero si no tuvieran signo, equivaldrían a 15 (8+4+2+1). Todavía se almacena la misma cantidad de bits.

Quizás se pregunte por qué el límite negativo en un número con signo puede usar el octavo bit, mientras que el límite positivo está limitado a la suma de los 7 bits (1 menos que el octavo bit). Esto se debe a que 10000000 se considera tanto negativo como el octavo bit simultáneamente, porque su representación de -0 de lo contrario es redundante con 00000000 que representa 0. No hay distinción entre cero negativo y positivo, por lo que un bit negativo más significativo es siempre el valor de ese bit en sí (pero negativo).