Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avIda Fredriksson
1
Anders Sjögren Bitfält Kompakt datalagring i delar av bytes, ett fält av bits StackBytes Heap
2
Anders Sjögren Bitfält exempel För studenter i ämnet datateknik önskar man lagra följande data –personnummer i form av år ( xx=57 ) kräver 2bytes som ascii eller int men skulle gå att lagra i 7 bitar ( talen 0 - 128 ) månad ( 1-12 ) skulle gå att lagra i 4 bitar ( 0-15 ) dag ( talet 1-31 ) skulle gå att lagra i 5 bitar ( 0-31 ) personnummer (0000- 9999) i 14 bitar –delbetyg TEN1 (0, 3-5) skulle gå att lagra i 3 bitar men i detta fall har jag valt 4 bitar för att få utjämning till ett helt ord, 2bytes TEN2 pss LAB1 pss PROJ1 pss
3
Anders Sjögren Bitfält exempel personnummer i form av –år ( xx=57 ) kräver 2bytes som ascii eller int men skulle gå att lagra i 7 bitar ( talen 0 - 128 ) –månad ( 1-12 ) skulle gå att lagra i 4 bitar ( 0-15 ) –dag ( talet 1-31 ) skulle gå att lagra i 5 bitar ( 0-31 ) –personnummer (0000- 9999) i 14 bitar delbetyg –TEN1 (0, 3-5) skulle gå att lagra i 3 bitar men i detta fall har jag valt 4 bitar för att få utjämning till ett helt ord, 2bytes –TEN2 pss –LAB1 pss –PROJ1 pss typedefstruct { unsignedar: 7, manad :4, dag :5, kontroll :14, :2, ten1 :4, ten2 :4, lab :4, proj :4 ; } studentDataTyp ; Här är en struct som gör detta möjligt.
4
Anders Sjögren Bitfält exempel typedefstruct { unsignedar: 7, manad :4, dag :5, kontroll :14, :2, ten1 :4, ten2 :4, lab :4, proj :4 ; } studentDataTyp ; Man bör använda unsigned Bitfälten angivna med namn och antal bitar. Ett icke namn- givet bitfält för att utjämna till ett helt ord. Bitfält skapas m h a en struct.
5
Anders Sjögren Bitfält exempel int main( void ) { intantal, i, temp ; studentDataTypstudentVektor[30]; printf("Hur många studenters prestationer skall matas in? --> "); scanf("%d", &antal ); for ( i=1 ; i <= antal ; i++ ) { printf("\nStudent nr%d :\n", i); printf("==============\n"); printf("Född år, xx -> "); scanf("%d",&temp); studentVektor[i-1].ar = temp ; printf(" månad, xx -> "); scanf("%d",&temp); studentVektor[i-1].manad = temp ; printf(" dag, xx -> "); scanf("%d",&temp); studentVektor[i-1].dag = temp ; printf("konrollnummer,xxxx -> "); scanf("%d",&temp); studentVektor[i-1].kontroll = temp ; printf("TEN1 betyg -> "); scanf("%d",&temp); studentVektor[i-1].ten1 = temp ; printf("TEN2 betyg -> "); scanf("%d",&temp); OSV....... Hur man tilldelar fälten värden. Man kan inte ange en adress till ett bitfält
6
Anders Sjögren Bitfält exempel for ( i=1 ; i <= antal ; i++ ) { printf("\nStudent nr%d, kontroll :", i); printf("\n========================\n"); printf("Född år, : %d \n", studentVektor[i-1].ar); printf(" månad, : %d \n", studentVektor[i-1].manad); printf(" dag, : %d \n", studentVektor[i-1].dag); printf("konrollnummer: %d \n", studentVektor[i-1].kontroll); printf("TEN1 betyg : %d \n", studentVektor[i-1].ten1); printf("TEN2 betyg : %d \n", studentVektor[i-1].ten2); printf("LAB betyg : %d \n", studentVektor[i-1].lab); printf("PROJ betyg : %d \n", studentVektor[i-1].proj); } Hur man hämtar värdet från ett bitfält
7
Anders Sjögren
8
Bitfält exempel Nästa gång kommer ett förbättrat program. Det är funktions-uppdelat och kan lägga till poster som lagras på fil
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.