/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

ERROR en Cap 3

 
      Índice del Foro elrincondelc.com -> Errores/Sugerencias del curso
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Oriol



Registrado: 05 Mar 2005
Mensajes: 4

MensajePublicado: 05/03/2005 7:07 am
Título: ERROR en Cap 3

Hola

En el subapartado "El tipo Int" se Dice:

"En una variable de este tipo se almacenan números enteros (sin decimales). El rango de valores que admite es -32767 a 32767. Cuando definimos una variable lo que estamos haciendo es decirle al compilador que nos reserve una zona de la memoria para almacenar datos de tipo int. Para guardarla necesitaremos 16 bits de la memoria del ordenador (2^16=32767). ..."

Aunque, por ser un curso de C, no sea imprescindible especificar y explicar cómo se representan los números enteros con 16 bits, por el rango que nos das (-32767 a 32767) nos estás indicando que la representación binaria que se usa es la de "signo y magnitud" y no la de "complemento a 2", cuyo rango sería (-32768 a 32767). En ambos casos tenemos un total de 2^16=65536 números binarios posibles, pues en el primer rango (-32767 a 32767), con el método "signo y magnitud" se representa el 0 dos veces (como -0 y como +0).

Bien, como he dicho no es necesario explicar esto en un curso de C, pero lo que no podemos es cometer errores matemáticos como 2^16=32767, pues 2^16=65536 (aparte de que cualquier potencia de 2 es par). Luego queda a la libre elección del autor del curso el explicar el porqué del rango, pero no se puede poner 2^16=32767 porque es matemáticamente falso.

Saludos
Volver arriba
Oriol



Registrado: 05 Mar 2005
Mensajes: 4

MensajePublicado: 05/03/2005 10:04 am
Título:

Hola,

siguiendo en el Cap 3, cuando se habla de las variables tipo char se dice:

"Las variables tipo char se pueden usar (y de hecho se usan mucho) para almacenar enteros. Si necesitamos un número pequeño (entre -127 y 127) podemos usar una variable char (8bits) en vez de una int (16bits), con el consiguiente ahorro de memoria."

Sin embargo, luego cuando se habla del modificador unsigned se dice:

"Esta variable en vez de tener un rango de -128 a 128 pasa a tener un rango de 0 a 255."

Es decir, primero se dice que el rango es [-127,127] y luego que es [-128,128], luego uno de los dos está mal.

Tal y como he explicado en mi post anterior, según el método de representación binario utilizado el rango puede ser [-127,127] ó [-128,127], o sea, que habría que corregir donde pone que el rango es [-128,128], que evidentemente es un error. Esto se ve claramente pues si disponemos de 8 bits se pueden generar 2^8=256 palabras binarias, y el rango [-128,128] contiene 257.

Saludos
Volver arriba
      Índice del Foro elrincondelc.com -> Errores/Sugerencias del curso
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com