Find Even / Odd Nummer ohne Verwendung von mathematischen / bitweisen Operator

8

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!

    
Jay Bazuzi 26.12.2009, 10:53
quelle

10 Antworten

35

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

    
SuperSaiyan 26.12.2009, 11:02
quelle
14

Die beste Lösung für Ihr Problem:

%Vor%     
missingfaktor 26.12.2009 11:12
quelle
6
%Vor%     
UncleBens 26.12.2009 10:58
quelle
5

Sie könnten die Zahl in eine Zeichenkette umwandeln und prüfen, ob die letzte Ziffer 1,3,5,7 oder 9 ist.

    
pablochan 26.12.2009 10:56
quelle
2

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.

    
Soufiane Hassou 26.12.2009 10:56
quelle
1

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

    
Kevin Montrose 26.12.2009 11:06
quelle
1

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

    
benzado 26.12.2009 11:11
quelle
0

Wie wäre es mit einem einfachen bitweisen oder?

%Vor%

(bearbeiten) hmm ... Ich nehme an, ich sollte den Titel lesen, oder?

    
ultifinitus 29.03.2011 21:33
quelle
0
%Vor%     
shahid 03.10.2011 06:45
quelle
0
%Vor%     
atulsi001 22.09.2011 19:26
quelle

Tags und Links