![]() |
| |||
| 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 |
| | ||||
| ||||
| |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
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 |