[C con Clase] Duda con el 0
Steven R. Davidson
vze266ft en verizon.net
Mar Mar 18 08:08:10 CET 2008
Hola David,
David Reza wrote:
> El 0 (cero) en C++ es un número positivo o negativo?
>
> Lo pregunto por lo del asunto de que las variables 'signed',
> dependiendo del tipo que sean pueden tener ciertos valores entre
> números negativos y números positivos, pero siempre el negativo es el
> valor positivo menos una unidad.
>
> Por ejemplo, en una variable 'signed char' puedo almacenar un número
> entre -127 y 128, lo que me hace pensar que los positivos son del 1 al
No. El intervalo correcto es: -128 á +127.
> 128 (128 en total) y los negativos son del 0 al -127 (128 en total),
> pero internamente el 0 se podría representar como 0000000; en este
> caso no se utiliza el último bit como signo menos y entonces se
> contradice mi pensamiento de que el cero es negativo.
>
Efectivamente, el 0 (cero) se considera positivo. En primer lugar, como
has dicho, el bit de signo es 0 indicando que es positivo. Por otro
lado, si intentáramos aplicar el complemento de 2, obtendríamos,
0 = 00000000
complemento de 1 => 11111111
complemento de 2 => 11111111 + 1 = 00000000
Como puedes ver, acabamos con la misma representación que la que empezamos.
> Hay otra forma en la que se puede representar internamente el 0,
> utilizando el último bit como signo menos?
>
Usando las representanciones existentes e implementadas, no. Si 0
valiese otra cosa, existirían varios problemas a la hora de programar e
implementar código.
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase