Bitfeld addieren/subtrahieren [2]
-
Hallo,
jetzt habe ich hier zwei Bitfelder und weis immernochnicht, wie ich die nun richtig addieren/subtrahieren kann. Wie würde dass den mit dem Übertrag aussehen ???Hier der Code
#include <stdio.h> int main(void) { union uni1 { short input; struct binarzahl1 { unsigned b0 : 1; unsigned b1 : 1; unsigned b2 : 1; unsigned b3 : 1; unsigned b4 : 1; unsigned b5 : 1; unsigned b6 : 1; unsigned b7 : 1; unsigned b8 : 1; unsigned b9 : 1; unsigned b10: 1; unsigned b11: 1; unsigned b12: 1; unsigned b13: 1; unsigned b14: 1; unsigned b15: 1; }bitfeld1; }univar; union uni2 { short input; struct binarzahl1 { unsigned b0 : 1; unsigned b1 : 1; unsigned b2 : 1; unsigned b3 : 1; unsigned b4 : 1; unsigned b5 : 1; unsigned b6 : 1; unsigned b7 : 1; unsigned b8 : 1; unsigned b9 : 1; unsigned b10: 1; unsigned b11: 1; unsigned b12: 1; unsigned b13: 1; unsigned b14: 1; unsigned b15: 1; }bitfeld1; }univar2; printf("Short Zahl1 eingeben:"); scanf("%u", &univar.input); printf("Short Zahl2 eingeben:"); scanf("%u", &univar2.input); printf("%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u\n", univar.bitfeld1.b15, univar.bitfeld1.b14,univar.bitfeld1.b13, univar.bitfeld1.b12, univar.bitfeld1.b11, univar.bitfeld1.b10, univar.bitfeld1.b9, univar.bitfeld1.b8, univar.bitfeld1.b7, univar.bitfeld1.b6, univar.bitfeld1.b5, univar.bitfeld1.b4, univar.bitfeld1.b3, univar.bitfeld1.b2, univar.bitfeld1.b1, univar.bitfeld1.b0); return 0; }
-
deine union funktioniert nicht. Machs am besten einfach mit nem normalen short.
short Bitfeld = 9;
dann kannst du auf Bit 1 so zugreifen:if(Bitfeld & 1<<0) printf("Bit 0 ist 1"); if(Bitfeld & 1<<1) printf("Bit 1 ist 1"); . . .
Das mit dem Übertrag geht so:
struct binaerzahl { unsigned b0 : 1; unsigned b1 : 1; unsigned b2 : 1; unsigned b3 : 1; unsigned b4 : 1; unsigned b5 : 1; unsigned b6 : 1; unsigned b7 : 1; unsigned b8 : 1; unsigned b9 : 1; unsigned b10: 1; unsigned b11: 1; unsigned b12: 1; unsigned b13: 1; unsigned b14: 1; unsigned b15: 1; }bitfeld1, bitfeld2; bitfeld1.b1=1; bitfeld1.b2=0; //alle anderen bits initialisieren. binaerzahl Addiere(binaerzahl Bitfeld1, binaerzahl2 Bitfeld2) { binaerzahl Summe; Summe.b0 = Bitfeld1.b0+Bitfeld2.b0; Summe.b1 = Bitfeld1.b1+Bitfeld2.b1+Summe.b0%2; ... Summe.b0 %= 2; Summe.b1 %= 2; ... return Summe; }
[ Dieser Beitrag wurde am 12.06.2003 um 22:04 Uhr von dEUs editiert. ]
-
Hi,
mal so aus Neugierde. Warum bestehst Du auf diese Struktur, wenn man das auch einfacher haben kann ?
grüße Con@n
[ Dieser Beitrag wurde am 12.06.2003 um 23:24 Uhr von Con@n editiert. ]