Heim > Artikel > Web-Frontend > Lustige JavaScript-Frage: Statistische Binärdatei
Diejenigen, die am Frontend arbeiten, haben bestimmt nur wenige Möglichkeiten, mit Binärdateien in Kontakt zu kommen. Sind diese Bitoperationen nicht etwas, das die unterste Ebene berücksichtigen sollte?
Ich habe gestern eine Frage gesehen, die sich auf Binärdateien bezog, aber es spielte keine Rolle, ob Bitoperationen verwendet wurden oder nicht. Sie konnte mit Hilfe der Sprachfunktionen von JS leicht gelöst werden.
wird wie folgt beschrieben:
Schreiben Sie eine Funktion, die eine positive dezimale Ganzzahl als Parameter empfängt, sie binär darstellt und die Zahl zurückgibt, deren Ziffern gleich 1 sind.
Zum Beispiel:
1234 binär ausgedrückt ist 1001101 00 10, es gibt 51, also wird 5 zurückgegeben.
Nachdem ich diese Beschreibung gelesen hatte, fiel mir als Erstes ein, dass der Lehrer mir immer beigebracht hat, wie man von Dezimalzahlen in Binärzahlen umwandelt (es wird einfacher sein, das Buch zu verwenden ^_^) .
Zum Glück habe ich ein gutes Gedächtnis und habe schnell darüber nachgedacht. Für diese positive ganze Zahl nimmst du zuerst den Rest von 2 und dividierst ihn dann durch 2 , und überprüfen Sie dann das Ergebnis Nehmen Sie den Rest von 2 und dividieren Sie ihn durch 2... bis das Ergebnis 0 ist.
Verwenden Sie dann im obigen Prozess eine Variable, um aufzuzeichnen, wie oft der Rest 1 ist, und kehren Sie schließlich zurück.
Deshalb haben wir uns den folgenden Ansatz ausgedacht:
var countBits = function(n) { var count = 0; while(n > 0){ var res = n % 2; if(res == 1){ count++; } n = parseInt(n / 2); } return count; };
Dieser Code und diese Idee sind durchaus zufriedenstellend, nutzen sie jedoch nicht vollständig aus Sprachmerkmale von JS.
Gibt es keine fertige API zum Konvertieren von Dezimalzahlen in Binärzahlen in JS?
number.toString(2), erhält das nicht eine Binärzeichenfolge?
Alle Ergebnisse werden ausgegeben. Suchen Sie dann nacheinander nach der Zahl 1 und kehren Sie dann zurück.
Hmm, die beiden oben genannten Methoden sind gut, aber sie führen zum gleichen Ziel, und die effizienteste Methode ist die Bitoperation.
Werfen wir zum Schluss einen Blick auf eine kleine Operationslösung, die von einem ausländischen Experten geschrieben wurde!
function countBits(n) { for(c=0;n;n>>=1)c+=n&1 return c; }
Tsk, tsk, der Rhythmus, der deine Augen blind macht.
Das Obige ist eine interessante JavaScript-Frage: Statistischer Binärinhalt Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!