Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Solo hay 10 tipos de personas, las que saben binario y las que no.
#1
Bug 

Hola amigos.
Estoy tratando de cambiar de grupo, jeje.
Por ejemplo en esto:
C
  1. typedef struct
  2. {
  3. unsigned level:6 ; /* level element is on */
  4. unsigned :1 ; /* reserved */
  5. unsigned complex:1 ; /* component of complex elem.*/
  6. unsigned type:7 ; /* type of element */
  7. unsigned deleted:1 ; /* set if element is deleted */
  8. unsigned short words ; /* words to follow in element */
  9. unsigned long xlow ; /* element range - low */
  10. unsigned long ylow ;
  11. unsigned long zlow ;
  12. unsigned long xhigh ; /* element range - high */
  13. unsigned long yhigh ;
  14. unsigned long zhigh ;
  15. } Elm_hdr ;


 
  1. ¿Que son las "words to follow" ? en los lenguajes naturales una palabra es un conjunto de letraas con significado, en un binario ¿Que es una palabra?

1 Saludo.
    ¡Gracias!
#2

(06-09-2022, 21:29)tincho escribió:  unsigned short words ; /* words to follow in element */

La parte importante es la que obviamente pertenece a la declaración del tipo de datos "unsigned short": es decir Short "sin signo", capaz de representar valores enteros de 0 a +65535.

En cuanto a tu pregunta sobre "palabra" (word), no sé si el comentario a ese miembro de la Estructura se refiere al concepto de "word" en informática: https://es.wikipedia.org/wiki/Palabra_(i...C3%A1tica)

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • tincho
    ¡Gracias!
#3

(07-09-2022, 00:22)vuott escribió:  En cuanto a tu pregunta sobre "palabra" (word), no sé si el comentario a ese miembro de la Estructura se refiere al concepto de "word" en informática: https://es.wikipedia.org/wiki/Palabra_(i...C3%A1tica)

No lo se, todos los miembros de la Struct tienen 16 bits hasta "words" inclusive, luego todos tienen 32 bits. Así que no entiendo que es words
Las variables del primer grupo contienen numeros enteros de 0-255 en realidad con un byte alcanza, no se por que usa dos bytes.
Luego el ultimo grupo todos los miembros representan, cada uno un valor Float en una dimension (x, y, z) y son dos grupos porque estan los maximios y los minimos.

1 Saludo.
    ¡Gracias!
#4

Es posible que se refiera al hecho de que los 5 primeros elementos de la Estructura son "Campos" que hacen referencia a los bits individuales de una variable.
Por lo general, la suma de los bits, utilizados por cada "Campo", se redondea a la palabra (word) de la máquina, que suele ser igual a la de un "int" (como Integer en Gambas).
En este caso, sumando los bits declarados, en una maquina de 64bit se obtienen 16 bits y otros 16 bits permanecen sin usar, que pero luego son ocupados por el miembro unsigned short:
16bit + 16bit = 32bit (4byte) = palabra de la máquina de 64bit = SizeOf(gb.Integer).

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#5

ok, esos numeros luego de : son los bits que conforman el dato de esa variable.
Ok, voy comprendiendo, mañana intento hacer un caso practico y vuelvo con mas preguntas.

1 Saludo.
    ¡Gracias!
#6

(07-09-2022, 01:07)tincho escribió:  luego todos tienen 32 bits

Si la máquina es de 64 bits, entonces el tipo de datos unsigned long ocupa 8 bytes (64 bits).

    unsigned level:6  ;  ------
    unsigned :1 ;                 |
    unsigned complex:1 ;   |   16 bit en total
    unsigned type:7 ;          |
    unsigned deleted:1 ;----
    unsigned short words ; 16 bit
    unsigned long xlow ;    64 bit
    unsigned long ylow ;    64 bit
    unsigned long zlow ;    64 bit
    unsigned long xhigh ;   64 bit
    unsigned long yhigh ;   64 bit
    unsigned long zhigh ;   64 bit
    } Elm_hdr ;
La Estructura ocupa en total 56 Byte.

(07-09-2022, 01:24)vuott escribió:  se redondea a la palabra (word) de la máquina, que suele ser igual a la de un "int" (como Integer en Gambas)

Bueno, prueba este codigo en Gambas para ver la memoria ocupada por una pequeña Estructura, formada por solo los 5 Campos de la tu Estructura 'Elm_hdr':

GAMBAS
  1. Private Extern calculus() As Long In "/tmp/campos"
  2.  
  3. Public Sub Main()
  4.  
  5.   Dim l As Long
  6.  
  7.   Creaso()
  8.   
  9.   l = calculus()
  10.   Print "Tamaño en total de los Campos de la Estructura 'Solo_Campos': \e[1m"; l; "\e[0m byte"
  11.  
  12.  
  13.   
  14.   File.Save("/tmp/campos.c", "typedef struct {\n" &
  15.                            "   unsigned level:6 ;\n" &
  16.                            "   unsigned :1 ;\n" &
  17.                            "   unsigned complex:1 ;\n" &
  18.                            "   unsigned type:7 ;\n" &
  19.                            "   unsigned deleted:1 ;\n" &
  20.                            "} Solo_Campos;\n\n" &
  21.                            "long int calculus() {\n" &
  22.                            "  return sizeof(Solo_Campos);\n}")
  23.   
  24.   Shell "gcc -o /tmp/campos.so /tmp/campos.c -shared" Wait
  25.   


En una maquina de 64bit el resultado del tamaño de esta pequeña Estructura es = 4 bytes (32 bits), como ya he escrito, especificados como sigue:
16 bits ocupados por los 5 Campos + 16 bits no ocupados.
(...pero que en la real Estructura "Elm_hdr" serán ocupados por el Miembro unsigned short words).

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
    ¡Gracias!
#7

(07-09-2022, 01:43)vuott escribió:  prueba este codigo en Gambas para ver la memoria ocupada por una pequeña Estructura, formada por solo los 5 Campos de la tu Estructura 'Elm_hdr':

Probe, el resultado es:
Bash
  1. Tamaño en total de los Campos de la Estructura 'Elm_hdr': 4 byte



1 Saludo.
    ¡Gracias!
#8

(06-09-2022, 21:29)tincho escribió:  Estoy tratando de cambiar de grupo, jeje.

¿ De música ?. Tongue

Visto la definición de los tipos de datos ya resulta complejo. Y como para equivocarte en la elección.

Saludos

"El buen perfume en frasco pequeño se vende"
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)