Ich wurde kürzlich gebeten, ein Programm zu schreiben, das bestimmt, ob eine Zahl gerade oder ungerade ist, ohne einen mathematischen / bitweisen Operator zu verwenden!
Irgendwelche Ideen?
Danke!
Dies kann mit einem 1-Bit-Feld wie im folgenden Code geschehen:
%Vor%Da das obj.a ein Einfeldwert ist, wird nur LSB dort gehalten! Und Sie können das für Ihre Antwort überprüfen. 0 - & gt; Auch sonst ungerade .. !!
Ich bin mir nicht sicher, ob == als ein mathematischer Operator betrachtet wird, wenn nein, dann konvertiere die Zahl in eine Zeichenkette und teste, ob das letzte Zeichen gleich 0, 2, 4, 6 oder 8 ist.
Bearbeiten: == scheint als Vergleichsoperator / relationaler Operator betrachtet zu werden.
... Warum würdest du das tun?
Dies ist nur möglich, wenn Sie schreiben +, -, /, *, & amp; | | vermeiden möchten ^ oder%.
Schalter und Zeichenkettenkonvertierung haben implizite Nachschlagetabellen und somit implizite Zusätze.
Das Folgende soll es vermeiden:
%Vor%Aber es implizit verwendet & amp; um genau hin zu kommen.
Das ist eine seltsame Herausforderung.
Sie können die Nummer als Speicheradresse für eine Ladeanweisung verwenden. Wenn Ihre Architektur erfordert, dass Speicherzugriff auf Zwei-Byte-Offsets ausgerichtet wird, dann lässt der Prozessor Lasten von geraden Adressen zu und löst eine Ausnahme für eine ungerade Adresse aus (nicht ausgerichtete Last).
Wie wäre es mit einem einfachen bitweisen oder?
%Vor%(bearbeiten) hmm ... Ich nehme an, ich sollte den Titel lesen, oder?
Tags und Links c++