Gerade ungerade c++ Bitmuster?
Schreiben Sie ein Programm, das anhand der Kontrolle des letzten Bits einer Zahl erkennt, ob eine Zahl gerade oder ungerade ist. Das Programm soll nach einer Zahleneingabe fragen und ausgeben, ob diese Zahl gerade oder ungerade ist.
Alle Bits, außer Bit 1 und Bit 5 in einem beliebigen 8-Bitmuster sollen mittels einer Bitoperation auf 0 gesetzt werden. Nach Eingabe eines Bitmusters soll die Bearbeitung ausgegeben werden.
Kann mir da jemand helfen wie ich das programmiere?
4 Antworten
Schreiben Sie ein Programm, das anhand der Kontrolle des letzten Bits einer Zahl erkennt, ob eine Zahl gerade oder ungerade ist.
Nun ja, du schaust einfach das rechte Bit an. ist es 1 => ungerade. ist es 0 => gerade
Das Programm soll nach einer Zahleneingabe fragen und ausgeben, ob diese Zahl gerade oder ungerade ist
Eine Dezimalzahl oder eine Binärzahl? Bei der Binärzahl kannst du einfach direkt die letzte stelle nehmen, bei einer Dezimalzahl musst du es einmal mit 2 modulo nehmen. Ist der rest 1 => ungerade, ist er 0 => gerade.
Alternativ auch wieder das letzte Bit anschauen
Alle Bits, außer Bit 1 und Bit 5 in einem beliebigen 8-Bitmuster sollen mittels einer Bitoperation auf 0 gesetzt werden. Nach Eingabe eines Bitmusters soll die Bearbeitung ausgegeben werden.
Nun ja, du machst einfach ein Bitweises und.
z.B.
int x = 0b11111111;
x = x & 00100010;
Wenn das niederwertigste Bit 1 ist, ist die 8-Bitzahl ungerade, sonst gerade. Wozu man da noch Bit 5 braucht ist mir schleierhaft.
Hallo,
hab das mal in C geschrieben, kannst Du sogar in C++ auch verwenden oder eben mit std::cin bzw. std::cout die I/Os machen. Beim ersten schaust Du ob das LSB 1 oder 0 ist:
uint8_t z;
scanf("%hhu", &z);
if(z & 0x01) printf("Zahl ungerade");
else printf("Zahl gerade");
Bei der zweiten Aufgabe verUNDest Du Deine Zahl überall mit 0, außer für Bit 1 und Bit 5. Nehme an dass z irgend ne Zahl ist.
z &= 0b00100010;
LG. Kesselwagen
Worin besteht denn die Schwierigkeit?
Prüfen ob eine Zahl gerade/ungerade ist: bitwise and
Maskierung ebenso.
Du kannst natürlich bei C++ auch auf std::bitset zurückgreifen udn Dir damit einen schmalen Fuß machen *g*.