整数を入力し、その数値のバイナリ表現で表される1の数を出力する関数を実装してください。たとえば、9 を 2 進数で 1001 と表すと、2 ビットが 1 になります。したがって、9 を入力すると、関数は 2 を出力します。まず、2進数1の解法ですが、ここで最も考えるべきはビット演算に関する演算子です。合計 5 つの演算があります: AND (&)、OR (|)、XOR (^)、右シフト (>>)、および左シフト (
無限ループを引き起こす可能性のある最初の解決策:
アイデア 1: まず、指定した整数がこの数値の右端の部分が 1 であるかどうかを判断します。 1 の場合は、カウンターを与え、それに 1 を加えます。次に、入力された整数を 1 ビット右にシフトし、整数が 0 になるまでシフトを続けてカウンタを出力します。
function NumberOf1(n) { let count = 0; while(n) { if(n & 1) { count ++; } n = n >> 1; } return count; } console.log(NumberOf1(9));
このアルゴリズムは、符号なしの数値に対しては問題ありませんが、符号付きの数値に対しては大きな問題となり、無限ループを引き起こす可能性が非常に高くなります。 n が負の数の場合、n は右にシフトされ、(データが負であることを保証するために) 最上位ビットに 1 が追加されるため、最終的には無限ループが形成されます。例:0x80000000、1つ右にずらすと0xC0000000となります。これは負の数のシフトであるため、シフトされた数が負の数であることを確認する必要があり、最上位ビットは常に 1 になります。これは、最終的にはこの数が常に無限ループすることを意味します。
アイデア 2: 1 を移動するには、まず最下位ビットが 1 であるかどうかを判断し、次に 1 を 2 に移動します。次に、それを整数比と比較して、最後から 2 番目の桁が 1 であるかどうかを判断します。 。 。このようにして、最終的に効果が得られ、オール1の数が得られる。
function NumberOf1(n) { let count = 0; let flag = 1; while(flag) { if(n & flag) { count ++; } flag = flag <p>最後に、最良の方法を提供します。 </p><p>アイデア 3: 整数から 1 を減算し、元の整数との AND 演算を実行します。整数の右端の 1 は 0 に変換され、1 の後の 0 はすべて 1 に変換されます。そして、整数の 2 進数にある 1 の数だけこの演算を実行できます。最後に、カウンタを使用して演算の回数を求め、カウンタを出力するだけです。 </p><pre class="brush:php;toolbar:false">//更好的解法 function NumberOf1(n) { let count = 0; while(n) { count ++; n = (n-1) & n; } return count; } console.log(NumberOf1(9));
関連する推奨事項:
順次リンク リストとリンク線形テーブルの PHP データ構造の例
単一リンク リストと循環リンクの JavaScript データ構造リストの例の共有
以上がJavaScriptのデータ構造とアルゴリズムを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
