検索
ホームページバックエンド開発PHPチュートリアルインタビュー質問:バイナリビット反転の実装アイデアの説明(PHP一般版)

これは面接の質問ですが、理解できないと表明した学生もいました。簡単なトレーニングをすることは難しくありませんが、完璧な比較を書くには基礎力が試され、論理的思考力も必要となります。生徒の方向性が PHP であるため、PHP を使用して説明します。また、PHP を学習することが重要ではないこともわかります。エコー「hello world」を 2 文書くか、Web ページにループ出力することができれば、PHP を呼び出すことができると言われています。

# ここでいくつかの知識を紹介します: (推奨される学習: PHP ビデオ チュートリアル)

##1 、数値は 1 バイト、つまり 8 ビットを占めます。

たとえば、10 進数の 1 は、コンピュータでは 2 進数で 00000001 と表現されます (10 進数を 2 進数に変換するのを忘れた場合は、Baidu に問い合わせてください。以下の内容は理解できないので忘れてください~~~)

PHP では

echo bindec("00000001");   //bindec函数可以让你体会到 二进制和10进制之间的 骚转换<br/>

#2 を使用できます。10 進数の加算 1 1 =2 (このヒントは非常に重要です) ~~、よく理解してください)

ディスプレイスメントでそれを行うにはバイナリを使用してください

答え: 00000010 これは正確に 2 (2 の 1 乗) です。

10 進数の 2 1=3 はどうでしょうか?


答え: 00000011 これはちょうど 3 (2 の 1 乗、2 の 0 乗 = 2 1 = 3)

では、10進数の3 1=4はどうでしょうか?


答え: 00000100 これは 4 (2 の 2 乗) です。

それでは、10 進数の 4 1=5 はどうでしょうか?


答え: 00000101 この男は 4 (2 の 2 乗、2 の 0 乗 = 4 1 = 5)

問題の解決を開始します

2 進数 00000101 があるとします。今度はそれを逆さまにして 10100000 に変える必要があります。どうやって遊ぶのですか?

答えはインターネット上にたくさんあるので、以下のアイデアについて話しましょう:


1. まず、2 つの変数 が必要です。

1) 一時変数は $xxoo と呼ばれ、初期値は 0 (10 進数)、バイナリでは 00000000

です。 2) 元の値変数は $shit と呼ばれ、00000101 ~

2. 3 つのステップ

1) $xxoo を 1 ビット左に移動します

2) バイナリの最後の桁かどうかを判断します$shit の値は 1 です。そうであれば、$ を与えます。xxoo の 10 進数の値は 1 増加します。これを 2 進数とみなして 00000000 を 00000001 に変更することが非常に重要です。そうでない場合、$xxoo の初期値は 00000000 です。これはp ずつずらしてください。 。 。それらはすべて 0 なので、2 進数の最後のビットが 1 であるかどうかをどのように判断するのでしょうか?文字列または正規表現をインターセプトして判断する必要があります(不可能ではありません)

回答: 元の値と 1 (つまり 00000001) の論理 AND 演算を実行するだけです (1&1 は 1) 、1&0 または 0&1 は常に 0)

3) 次に、$shit を 1 桁右に移動します

1) 元々 00000101 だった場合、00000010 になります移動後 (つまり、$xxoo と shit が同時に左に 1 つ、右に 1 つ移動されます。shit の最後のビットが 1 であれば、それを判断できるので、$ の最後のビットはxxoo も 1 に設定して、xxoo と shit の両方を実現します。同期と逆)

上記の処理を 8 回繰り返して、10100000

完全なコードは次のとおりです。以下に続きます
function rev($n)<br/>{<br/>    $xxoo = 0;<br/>    for ($i = 0; $i < 8; $i++) {<br/>        $xxoo = $xxoo << 1;<br/>        if (($n & 1) == 1) {<br/>            $xxoo++;<br/>        }<br/>        $n = $n >> 1;<br/>    }<br/>    return $xxoo;<br/>}<br/>echo decbin(rev(5));<br/>

ただし、注意してください。上記の関数は半角数字をサポートしています (8 桁のみをサポートしています)

オンライン面接の質問は 32 です。 -bit 数値、および次のコードは

一般数字 (このコードはオンラインでは利用できません~~~)。考えて理解しましょう。あまり説明はしません。PHP コードのスキルが必要です:

function rev($n)<br/>{<br/>    $num=intval(strlen(decbin($n))/8); //整除 8<br/>    if($num==0)<br/>        $bitLen=8;//最小8位<br/>    else<br/>    {<br/>        if((strlen(decbin($n)) % 8)>0)<br/>            $bitLen=($num+1)*8;<br/>        else<br/>            $bitLen=$num*8;<br/>    }<br/>    echo “原始值二进制:”.str_pad(decbin($n),$bitLen,’0′,STR_PAD_LEFT).”<br/>”;<br/>    $xxoo = 0;<br/>    for ($i = 0; $i < $bitLen; $i++) {<br/>        $xxoo = $xxoo << 1;<br/>        if (($n & 1) == 1) {<br/>            $xxoo++;<br/>        }<br/>        $n = $n >> 1;<br/>    }<br/>    echo “反转后值二进制:”.str_pad(decbin($xxoo),$bitLen,’0′,STR_PAD_LEFT).”<br/>”;<br/>    return $xxoo;<br/>}<br/>

Call test
echo rev(4);<br/>echo rev(43261596);<br/>

結果
原始值二进制:00000100<br/>反转后值二进制:00100000<br/>32原始值二进制:00000010100101000001111010011100<br/>反转后值二进制:00111001011110000010100101000000<br/>964176192<br/>

以上がインタビュー質問:バイナリビット反転の実装アイデアの説明(PHP一般版)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はwww.hishenyi.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎PHP:多くのウェブサイトの基礎Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター