2011-03-10 16 views

Respuesta

54

valor int puede ser -2147483648 estos son los 11 dígitos por lo que el valor predeterminado pantalla tamaño es 11

unsigned int no permite que los números negativos por lo que por defecto sólo necesita pantalla tamaño 10

Como muestra la documentación a continuación, el número de bits requeridos para almacenar INT FIRMADO e INDIGNADO es el mismo, el rango de números almacenables simplemente se desplaza:

El tipo sin signo se puede utilizar para permitir solo números no negativos en una columna o cuando necesita un rango numérico superior superior para la columna. Para ejemplo, si una columna INT es UNSIGNED, el tamaño del rango de la columna es el misma pero sus puntos finales pasar de -2147483648 y 2147483647 hasta 0 y 4294967295.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

+3

Gracias tonelada ... btw también soy de Bikaner :) – diEcho

+0

@diEcho: Genial, los dos somos del mismo lugar. Encantado de hablar contigo en SO –

+0

Hola Rajasthanis :) .. Tu publicación sigue ayudándonos :) – Ravi

7

Sólo en caso de que alguien no entienda completamente Shakti's answer (como yo no). He aquí una representación visual de qué:

Signed minimum: 
- 2 1 4 7 4 8 3 6 4 8 
1 2 3 4 5 6 7 8 9 10 11 

Unsigned max (also the signed max): 
4 2 9 4 9 6 7 2 9 5 
1 2 3 4 5 6 7 8 9 10 
+0

Los espacios para guardar el valor no tienen nada que ver con eso. Este es solo el _display width_ y no restringe el valor almacenado de ninguna manera. –

+3

El máximo firmado no es 2^32-1, sino 2^31-1, ya que tiene un bit para el signo, por lo tanto, máximo sin signo! = Máximo firmado. –

22

Según the documentation, este número no es más que el ancho de la pantalla .

Por ejemplo, INT (4) especifica una INT con un ancho de visualización de cuatro dígitos .

El ancho de visualización no limita el rango de valores que pueden ser almacenados en la columna. Tampoco impide que los valores más amplios que el ancho de la columna se muestren correctamente. Por ejemplo, una columna especificada como SMALLINT (3) tiene el rango SMALLINT habitual de -32768 a 32767, y los valores fuera del rango permitido por tres dígitos son mostrados en su totalidad con más de tres dígitos.

El defecto ancho de la pantalla para una UNSIGNEDINT es uno menos que el de un no UNSIGNEDINT simplemente porque nunca se vaya a mostrar un carácter -.

Tenga en cuenta que aún puede especificar el ancho de visualización que desee. Esto es solo el predeterminado.

El uso del término "dígitos" en la documentación es ligeramente engañoso aquí.

+1

Eso es genial. Significa el ancho de la pantalla, no el rango de valores. – JackXu