Autor Tema: Tipos de datos  (Leído 3223 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Tipos de datos
« en: 02 de Abril de 2006, 13:37:00 »
Hola

Estaba haciendo un programa y me pasé de listo jejeje, declaré un arreglo de 32 variables tipo int16 y otro arreglo de 32 elementos de tipo float. Se me acabó la RAM y CCS no me dejaba compilar. Tuve que borrar el 2do arreglo.

Lo que no sé es cuantos bytes consume una variable float o una double. Lo que encontré en la ayuda es:

int1
 Defines a 1 bit number  
int8
 Defines an 8 bit number
int16
 Defines a 16 bit number
int32
 Defines a 32 bit number
char
 Defines a 8 bit character
float
 Defines a 32 bit floating point number
short
 By default the same as int1
Int
 By default the same as int8
long
 By default the same as int16
void
 Indicates no specific type
 

Pero no indica el no. de bytes usados. Por favor díganme si hay una tabla que los marque y también que indique los límites superior e inferior del tipo de dato, por ejemplo, int8 va de 0 a 255. Gracias.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Tipos de datos
« Respuesta #1 en: 02 de Abril de 2006, 13:59:00 »
Buenas!!!bueno decir que 8 bits = 1byte....


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Tipos de datos
« Respuesta #2 en: 02 de Abril de 2006, 14:54:00 »
jeje eso ya lo sé Muchas risas

pero por ejemplo,  ¿qué rango tiene esa variable? Enfurruñado

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Tipos de datos
« Respuesta #3 en: 02 de Abril de 2006, 15:12:00 »
Echale un vistazo al fichero float.h

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Tipos de datos
« Respuesta #4 en: 02 de Abril de 2006, 15:19:00 »
Ya revisé la info y ya me di cuenta de los datos jejeje, gracias amigos.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Tipos de datos
« Respuesta #5 en: 02 de Abril de 2006, 15:30:00 »
Escrito originalmente por migsantiago
jeje eso ya lo sé Muchas risas

pero por ejemplo, ¿cuántos bytes usa una variable float? ¿qué rango tiene esa variable? Enfurruñado


De acuerdo a lo que leo, interpreto que una variable float te ocupa 4 bytes (32 bits).

El tema es que depende como tu compilador almacene dicha variable y de ahí sabras en que rangos funciona pero es normal que use el modo de Microchip o el de la IEEE.

Microchip usa 4 bytes.  1 byte para el exponente (+127 a -128) y 3 bytes para la mantisa (24 bits de precisión).  Eso te da -8388608 a +8388607 como mantisa sumado el exponente.
Ahora habría que ver que formato usa el compilador CCS.  Como no lo uso no tengo el manual, pero seguro por algun lado lo debiera mencionar.


Lecturas recomendadas.

Floating Point to ASCII Conversion
http://ww1.microchip.com/downloads/en/AppNotes/00670b.pdf


IEEE 754 Compliant Floating Point Routines
http://ww1.microchip.com/downloads/en/AppNotes/00575.pdf

Wikipedia
http://es.wikipedia.org/wiki/IEEE_754


Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Tipos de datos
« Respuesta #6 en: 02 de Abril de 2006, 15:31:00 »
Gracias Maunix.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Tipos de datos
« Respuesta #7 en: 02 de Abril de 2006, 15:54:00 »
Y corroborando lo que dice el amigo manuix, en el manual del compilador, concretamente en la pagina 268, dice que declara 1 byte para el exponente y 3 bytes para la mantisa.


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Tipos de datos
« Respuesta #8 en: 02 de Abril de 2006, 20:26:00 »
Escrito originalmente por vszener
Y corroborando lo que dice el amigo manuix, en el manual del compilador, concretamente en la pagina 268, dice que declara 1 byte para el exponente y 3 bytes para la mantisa.


Suerte!!!Giño


Era lo más lógico pero ... como en software cada uno puede hacer lo que quiere... jeje.  El problema comienza cuando uno pretende comuunicarse con otros sistemas.  

De todas formas era raro que el CCS use un formato totalmente a medida de ellos pero.... ante la duda mejor no afirmar nada no?

En definitiva si el compilador no pretende hacer algo que se comunique con el exterior o con otros sistemas entonces podria implementar su propio sistema número de punto flotante pero para que reinventar la rueda si ya fue inventada no?

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Tipos de datos
« Respuesta #9 en: 02 de Abril de 2006, 20:38:00 »
En software se puede hacer CASI lo que uno quiere... me acabo de llevar una súper descepción... hice todo un programa que me tomó unas horas y cuando doy compilar me sale el CCS con que: "Arrays of bits are not permitted" ahhh Ardiendo

Todo mi programa trabaja así...

int1 trama_power[]=
   {1,1,0,1,0,1,0,0,1,0,0,0,0};
int1 trama_volup[]=
   {1,0,1,0,0,1,0,0,1,0,0,0,0};
int1 trama_voldown[]=
   {1,1,1,0,0,1,0,0,1,0,0,0,0};
int1 trama_chup[]=
   {1,0,0,0,0,1,0,0,1,0,0,0,0};
int1 trama_chdown[]=
   {1,1,0,0,0,1,0,0,1,0,0,0,0};

Pero bueno, lo volveré a hacer mañana. Avergonzado

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Tipos de datos
« Respuesta #10 en: 03 de Abril de 2006, 18:34:00 »
Escrito originalmente por migsantiago
En software se puede hacer CASI lo que uno quiere... me acabo de llevar una súper descepción... hice todo un programa que me tomó unas horas y cuando doy compilar me sale el CCS con que: "Arrays of bits are not permitted" ahhh Ardiendo

Todo mi programa trabaja así...

int1 trama_power[]=
   {1,1,0,1,0,1,0,0,1,0,0,0,0};
int1 trama_volup[]=
   {1,0,1,0,0,1,0,0,1,0,0,0,0};
int1 trama_voldown[]=
   {1,1,1,0,0,1,0,0,1,0,0,0,0};
int1 trama_chup[]=
   {1,0,0,0,0,1,0,0,1,0,0,0,0};
int1 trama_chdown[]=
   {1,1,0,0,0,1,0,0,1,0,0,0,0};

Pero bueno, lo volveré a hacer mañana. Avergonzado


Je, es que acabas de tocar un tema crucial... que tiene que ver con el mínimo dato que puede manejar un micro o una posición de memoria.

El inconveniente de los arrays de bits es como direccionarlos!  Se complica y mucho.  Osea si quieres el 9no bit, sería el 1er bit del 2do byte.  Te imaginas una instrucción que haga eso? que sepa que bit tocar de un byte? automáticamente?

No la hay, entonces por eso te sacan corriendo con dicho array..

No sos al primero que se le ocurre, no te sientas mal, pero dejame decirte que no es algo simple eso de arrays de bits....

Conque "en software uno puede hacer lo que quiere" me referia a la convención de los numeros de punto flotante Giño

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Tipos de datos
« Respuesta #11 en: 03 de Abril de 2006, 18:38:00 »
Sí, me lo imaginaba, creía que C era adaptable hasta donde uno quisiera, pero ya vi que tiene uno que otro límite.

Para corregir mi error hice un int16 que contuviera los 13 bits de mi arreglo y todo funcionó O.K., de hecho el programa quedó mucho más pequeño. Sonrisa Gigante