Sie haben etwas zu überprüfen, indem Sie Bit, mit einer Funktion mehr oder weniger wie folgt aus:
function p2(n) {
if (n === 0) return false;
while (n) {
if (n & 1 && n !== 1) return false;
n >>= 1;
}
return true;
}
Einige CPU-Befehlssätze enthalten sind, einen „gesetzten Bits zählen“ Betrieb (die alte CDC Cyber-Serie war ein) . Es ist nützlich für einige Datenstrukturen, die als Bit-Sammlungen implementiert sind. Wenn Sie einen Satz als eine Folge von ganzen Zahlen implementiert haben, wobei die Bitpositionen Elementen des eingestellten Datentyps entsprechen, dann beinhaltet das Erhalten der Kardinalität das Zählen von Bits.
bearbeiten wow Blick in Ted Hopps Antwort, die ich über diese gestolpert:
function p2(n) {
return n !== 0 && (n & (n - 1)) === 0;
}
Das von this awesome collection of "tricks" ist. Dinge wie dieses Problem gibt gute Gründe, Zahlentheorie :-)
Überprüfen Sie [diese Frage] (http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer). Nicht Javascript-spezifisch, aber interessant. –
Danke Rob, gerade gefunden (es sieht ein bisschen einfacher) http://stackoverflow.com/questions/1053582/how-does-this-bitwise-operation-check-for-a-power-of-2 – Tim
Nur zur Info, "OMD" = ['Old MacDonald'] (https://en.wikipedia.org/wiki/Old_MacDonald_Had_a_Farm). – rvighne