Gerade ungerade c++ Bitmuster?

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;
xxxcyberxxx  12.06.2018, 23:18

EDIT:

x = x & 00100010;

sollte auch

x = x & 0b00100010;

sein

0

Wenn das niederwertigste Bit 1 ist, ist die 8-Bitzahl ungerade, sonst gerade. Wozu man da noch Bit 5 braucht ist mir schleierhaft.

Woher ich das weiß:Berufserfahrung – Jahrzehnte IT Erfahrung, Experte für Kryptowährungen, 🐱
PWolff  13.06.2018, 00:07

Sind 2 unabhängige Aufgabenteile.

2

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

Woher ich das weiß:Studium / Ausbildung – Masterstudent in Elektrotechnik 🤓

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*.