Hier setzt die Anweisungen:Ich brauche ein C-Programm zu schreiben, das eine Union Struktur verwendet die Bits einer int
eine Vereinigung Daten struct WORD_T für eine uint16_t ganze Zahl definieren, so dass ein Wert kann auf eine zugeordnet werden WORD_T Ganzzahl auf drei Arten: (1) Um den Wert jedem Bit der ganzen Zahl zuzuweisen, (2) Um den Wert jedem Byte der ganzen Zahl zuzuweisen, (3) Den Wert direkt der ganzen Zahl zuweisen.
Ich weiß, ich brauche etwas anderes mit dieser ersten Struktur zu tun, aber ich bin ziemlich im Allgemeinen verloren. Hier ist, was ich habe:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#define BIT(n) (1 << n)
#define BIT_SET(var, mask) (n |= (mask))
#define BIT_CLEAR(var, mask) (n &= ~(mask))
#define BIT_FLIP(var, mask) (n ^= (mask))
union WORD_T{
struct{
uint16_t integerVar:16
};
struct{
unsigned bit1:0;
unsigned bit2:0;
unsigned bit3:0;
unsigned bit4:0;
unsigned bit5:0;
unsigned bit6:0;
unsigned bit7:0;
unsigned bit8:0;
unsigned bit9:0;
unsigned bit10:0;
unsigned bit11:0;
unsigned bit12:0;
unsigned bit13:0;
unsigned bit14:0;
unsigned bit15:0;
unsigned bit16:0;
};
void setIndividualBit(unsigned value, int bit) {
mask = BIT(value) | BIT(bit);
BIT_SET(n, mask);
}
};
'unsigned Bit1: 0;' bedeutet es 0 Bit groß ist, das keinen Sinn macht. Meinst du 'unsigned bit1: 1;'? – mch
Ich denke, mch richtig - 'Bit1: 0 'sagt "verwenden Null-Bits des unsigned", wobei' Bit1: 1', sagt – theGleep
"ein Bit verwenden", um einige Fragen der Umsetzung verwenden '#define BIT (n) (1U zu vermeiden << n) '(add 'u') – chux