Hola amigos.
Estoy tratando de cambiar de grupo, jeje.
Por ejemplo en esto:
C
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 ;
- ¿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?
(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)
(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.
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).
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.
(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
Creaso()
l = calculus()
Print "Tamaño en total de los Campos de la Estructura 'Solo_Campos': \e[1m"; l;
"\e[0m byte"
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
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).
(06-09-2022, 21:29)tincho escribió: [ -> ]Estoy tratando de cambiar de grupo, jeje.
¿ De música ?.
Visto la definición de los tipos de datos ya resulta complejo. Y como para equivocarte en la elección.
Saludos