Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.c++
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #41 (permalink)  
Antiguo 24-01-2006, 16:20:20
Antoine Leca
 
Mensajes: n/a
Predeterminado Re: Campos de bit

En news:1138014481.209677.286550***g47g2000cwa.googlegr oups.com,
lestat_l va escriure:
> Tengo un pequeño problema con campos de bit. El caso es que necesito
> que en un archivo se guarden datos con un número específico de bits,
> y para ello pensé utilizar los campos de bit,


En general, mala idea.

> que me parecieron una alternativa más lógica que hacer desplazamientos
> y máscaras para conseguir poner los valores adecuados.


Los campos de bits (con las máquinas actuales) no generan ninguna ventaja, y
tienen muchísimos aspectos sin normativa, por lo cual es mejor pasarse de
ellos, y aún más cuando se trata de intercambio de datos.


> - ¿Cómo se almacenan estos campos de bit realmente?


Como le gusta al compilador. Si le gusta de derecho a izquierda pués eso. Si
no, pués el contrario. Si le gusta alineado en frontera de word o de dword,
pués eso. Si se preocupa de compatibilidad con las versiones anteriores,
pués ni siquiera será necesariamente lo más eficaz (y no importa, porque por
regla general no se usan). Etc.

> - ¿Por qué, si inicializo los campos a 0, no guarda ceros en el
> archivo, en las posiciones donde no he escrito otra cosa?


No lo entiendo muy bién, pero en las posiciones donde tú no has escrito
ninguna cosa, por regla general puede haber cualquier cosa...


> typedef struct sPrincipal{
> unsigned int total:8;


Empezará en 0 bit 0, ocupará 1 byte.

> unsigned int ano:7;


Empezará en 1 bit 0, ocupará 7 bits (0 hasta 6).

> unsigned int tiempo:20;


Problemas. Primero, en un compilador de 16 bits, eso no vale.
Puede estar en el mismo word que el precedente, pero no confies en eso
(porqué 8+7+20=35, superior a 32). Entonces puede empezar en 2 o en 4, bit
0. Hasta el 4 o el 6, bit 3.

> unsigned int seD:8;


Aquí puedes tenerlo como suelto (todo los bits) en byte 5 o 7, o colgado al
precedente en byte 4-5 o 6-7, bits de 4 hasta 3.

Et cetera.


Eso, sin olvidar que la númeración de cual es el bit 0 puede variar (¿él de
menor valor, o él de más valor? ¿del byte, o del word?)
En máquina Intel en general es coherente y es el primero (empeza por el de
menor valor), pero con otra arquitectura puede haber de todo.


Antoine

Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
calculos con campos para armar nuevos campos laura Newsgroup microsoft.public.es.access 1 04-04-2008 18:12:27
RE: Campos ocultos o permisos sobre campos personalizas en Sharepo Ignasi Tebé Newsgroup microsoft.public.es.sharepoint 0 07-05-2007 16:14:01
Re: Campos de bit Nivel 7 Newsgroup es.comp.lenguajes.c++ 40 25-01-2006 10:36:43
Campos de bit lestat_l Newsgroup es.comp.lenguajes.c 25 24-01-2006 16:20:20
Re: Campos de bit Nivel 7 Newsgroup es.comp.lenguajes.c++ 0 24-01-2006 12:21:45





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2009, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.