SYNOPSIS
        int next_bit(string str, int start)
        int next_bit(string str, int start, int find_cleared)

BESCHREIBUNG
        Liefert den Zahlenwert des naechsten Bits im Bitstring <bit> nach
        der Position <start>. Gewoehnlich ist dies das naechste gesetzte
        Bit, aber wenn <find_cleared> angegeben und nicht 0 ist, wird
        die Postion des naechsten geloeschten Bits zurueck gegeben.

        Dabei ist das Finden von geloeschten Bits nach dem letzten gesetzten
        Bit auf die tatsaechliche Laenge von <str> beschraenkt.

        Jedes Zeichen enthaelt 6 Bits. In jedem Zeichen kann deshalb eine
        Zahl von 0 bis 63 gespeichert werde (2^6=64). Das erste Zeichen
        ist der Leerschlag " " mit dem Wert 0. Das erste Zeichen im String
        ist jenes mit den niedrigsten Bits (0-5).

BEISPIELE
        string s;
        int p;

        s = set_bit("", 4); s = set_bit(s, 2);

        for (p = -1; -1 != (p = next_bit(s, p); )
            write(p+"\n");

        --> das gibt 2 und 4 aus.

SIEHE AUCH
        set_bit(E), clear_bit(E), test_bit(E), last_bit(E), count_bits(E),
        and_bits(E), or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
