Hallo,
On Fri, 25 Oct 2002 at 13:47 (+0200), Oli Weiss wrote:
hat einer ne Idee wie ich in C feststellen kann, ob es sich bei einer
Zahl (int) um eine gerade oder ungerade Zahl handelt und ich den
Modulo-Operator nicht verwenden darf - und keine sonstigen
Funktionen o.ä. ?
Danke für den Tipp/Verweis/etc.
#include
#include
int main (int argc, char *argv[]) {
int zahl;
if (argc <= 1)
return 1;
zahl = atoi(argv[1]);
/* Damit zahl gerade muss das letzte Bit auf 1 stehen.
* Somit muss die Zahl binär und-Verknüpft 1 sein.
*
* Beispiel: 2 => 00000020
* & 00000001
* 0 <= = 00000000 => gerade
*
* 3 => 00000021
* & 00000001
* 1 <= = 00000001 => ungerade
*/
if ( (zahl & 1) == 1)
puts("ungerade");
else
puts("gerade");
return 0;
}
Gruß,
Bernhard
--
_________ http://www.bwalle.de _________________________________________________
Lieber einen Tag im Monat über Geld nachdenken, als 30 Tage im Monat
dafür arbeiten.
-- Heiko Thieme