tincho   06-09-2022, 21:29
#1
Hola amigos.
Estoy tratando de cambiar de grupo, jeje.
Por ejemplo en esto:
Código:
typedef struct
{
unsigned level:6 ; /* level element is on */
unsigned :1 ; /* reserved */
unsigned complex:1 ; /* component of complex elem.*/
unsigned type:7 ; /* type of element */
unsigned deleted:1 ; /* set if element is deleted */
unsigned short words ; /* words to follow in element */
unsigned long xlow ; /* element range - low */
unsigned long ylow ;
unsigned long zlow ;
unsigned long xhigh ; /* element range - high */
unsigned long yhigh ;
unsigned long zhigh ;
} 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.
vuott   07-09-2022, 00:22
#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)
Última modificación: 07-09-2022, 00:33 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   07-09-2022, 01:07
#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.
vuott   07-09-2022, 01:24
#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).
Última modificación: 07-09-2022, 02:02 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   07-09-2022, 01:40
#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.
vuott   07-09-2022, 01:43
#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':

Código:
Private Extern calculus() As Long In "/tmp/campos"

Public Sub Main()

  Dim l As Long

  Creaso()
  
  l = calculus()
  Print "Tamaño en total de los Campos de la Estructura 'Solo_Campos': \e[1m"; l; "\e[0m byte"

End

Private Procedure Creaso()
  
  File.Save("/tmp/campos.c", "typedef struct {\n" &
                             "   unsigned level:6 ;\n" &
                             "   unsigned :1 ;\n" &
                             "   unsigned complex:1 ;\n" &
                             "   unsigned type:7 ;\n" &
                             "   unsigned deleted:1 ;\n" &
                             "} Solo_Campos;\n\n" &
                             "long int calculus() {\n" &
                             "  return sizeof(Solo_Campos);\n}")
  
  Shell "gcc -o /tmp/campos.so /tmp/campos.c -shared" Wait
  
End
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).
Última modificación: 07-09-2022, 12:34 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
tincho   07-09-2022, 09:42
#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:
[code]

1 Saludo.
Shell   07-09-2022, 14:14
#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 conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 5 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.