| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Oriol
Registrado: 05 Mar 2005 Mensajes: 4
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |