/*
Wir testen jeweils das letzte Bit der Variablen n.
Die Schleife bricht ab, wenn n Null geworden ist.
(Die Binaerdarstellung der Null enthaelt keine Eins-Bits,
es ist also nichts mehr zu tun.)

Wir muessen den Operator >>> verwenden, um sicherzustellen,
dass links Null und nicht etwa das Vorzeichen nachgezogen wird.
Bei negativen Zahlen wuerde die Schleife sonst nicht abbrechen.
(Es wuerde immer die Eins nachgezogen und die Variable n
wuerde nie Null werden.)
*/



import JavaPack.*;

public class Einsen
{
  public static void main(String args[])
  {
    long n, einsen;
    System.out.print("Bitte geben Sie eine long-Zahl ein: ");
    System.out.flush();
    n = Einlesen.LiesLong();
    System.out.print("Die Binaerdarstellung des long-Werts " + n);

    einsen = 0;
    while(n != 0)
    {
      if((n & 0x1) != 0)
        einsen++;
      n >>>= 1;
    }

    System.out.println(" enthaelt " + einsen + " Eins(en).");
  }
}
