Tijdens het ontwikkelen van een nieuw programma loop ik tegen het volgende probleem aan. Alle variabelen uit een classe moeten binair opgeslagen worden in 3 rijen. In de onderstaande code heb ik het desbetreffende stuk code gekopieerd. In dit stuk heb ik de variabelen vervangen door binaire data welke de maximum waarde van de variabele representeert.
Als ik na deze code de w3Blocks.w[0], w3Blocks.w[1] en w3Blocks.w[2] bekijk, hebben deze respectievelijk de waarden:
1111.1111.1111.1111
0000.0000.0000.0001
1111.1111.1111.1111
Dit begrijp ik niet. ik verwacht de waarden:
1111.1111.1111.1111
1111.1111.1111.1111
0000.0000.0001.1111
Ik heb iedere variabele op zich geprobeerd en daarmee heb ik ontdekt dat de nLTO, nSense, nMin en nHour wel goed werken (bovense rij en de laatste bit van de tweede), maar de nMJD sluit niet direct aan, maar laat eerst 15 bits leeg en begint daarna de bits in de word array te zetten. Het probleem is dat deze direct na de nHour moet verder gaan zonder lege bits.
Ik hoop dat het probleem duidelijk genoeg is.. Anders wil ik het best nog eens proberen uit te leggen.
Kan iemand mij hiermee helpen?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| union { WORD w[3]; struct { unsigned nLTO : 5; unsigned nSense: 1; unsigned nMin : 6; unsigned nHour : 5; unsigned nMJD : 17; unsigned nFree : 3; unsigned nDum : 11; }; } w3Blocks; CGroup *g = (CGroup*)aGroups[0]; w3Blocks.w[0] = w3Blocks.w[1] = w3Blocks.w[2] = 0; w3Blocks.nLTO = 0x1F; w3Blocks.nSense = 0x1; w3Blocks.nMin = 0x3F; w3Blocks.nHour = 0x1F; w3Blocks.nMJD = 0x1FFFF; w3Blocks.nFree = 0x7; w3Blocks.nDum = 0x7FF; |
Als ik na deze code de w3Blocks.w[0], w3Blocks.w[1] en w3Blocks.w[2] bekijk, hebben deze respectievelijk de waarden:
1111.1111.1111.1111
0000.0000.0000.0001
1111.1111.1111.1111
Dit begrijp ik niet. ik verwacht de waarden:
1111.1111.1111.1111
1111.1111.1111.1111
0000.0000.0001.1111
Ik heb iedere variabele op zich geprobeerd en daarmee heb ik ontdekt dat de nLTO, nSense, nMin en nHour wel goed werken (bovense rij en de laatste bit van de tweede), maar de nMJD sluit niet direct aan, maar laat eerst 15 bits leeg en begint daarna de bits in de word array te zetten. Het probleem is dat deze direct na de nHour moet verder gaan zonder lege bits.
Ik hoop dat het probleem duidelijk genoeg is.. Anders wil ik het best nog eens proberen uit te leggen.
Kan iemand mij hiermee helpen?
Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.