ホームページ  >  記事  >  バックエンド開発  >  PHPで16進数変換とビット埋め込みを実装する方法

PHPで16進数変換とビット埋め込みを実装する方法

PHPz
PHPzオリジナル
2023-03-29 10:13:51686ブラウズ

PHP は Web 開発の分野で広く使用されているサーバーサイド スクリプト言語であり、数値演算の処理も PHP の重要な部分です。デジタル演算では、基数変換と補数が 2 つの重要な概念です。この記事では、読者がこれら 2 つの操作をよりよく理解して使用できるように、PHP の基本変換操作とパディング操作を詳しく紹介します。

1. 基数の変換

1.1 10 進数を他の基数に変換する

PHP には、10 進数を他の基数に変換するための関数が用意されており、最も一般的に使用されるのは decbin () です。 decoct() 関数と dechex() 関数。これらの関数は、10 進数をそれぞれ 2 進数、8 進数、16 進数の文字列に変換し、結果を返します。

サンプル コードは次のとおりです。

$decimal_num = 35;
$bin_num = decbin($decimal_num);  // 二进制
$oct_num = decoct($decimal_num);  // 八进制
$hex_num = dechex($decimal_num);  // 十六进制
echo "{$decimal_num}的二进制是:{$bin_num}\n";  // 输出35的二进制
echo "{$decimal_num}的八进制是:{$oct_num}\n";  // 输出35的八进制
echo "{$decimal_num}的十六进制是:{$hex_num}\n";  // 输出35的十六进制

出力結果は次のとおりです。

35的二进制是:100011
35的八进制是:43
35的十六进制是:23

1.2 他の基数を 10 進数に変換するのは、次の変換と似ています。 10 進数から他の基数への変換 他の基数を 10 進数に変換する操作に対応して、PHP は、bindec()、octdec()、および hexdec() 関数という対応する関数も提供します。これらの関数は、2 進数、8 進数、および 16 進数の文字列を 10 進数の整数に変換し、結果を返します。

サンプルコードは以下のとおりです:

$bin_num = '100011';
$oct_num = '43';
$hex_num = '23';
$decimal_num_from_bin = bindec($bin_num);  // 二进制转十进制
$decimal_num_from_oct = octdec($oct_num);  // 八进制转十进制
$decimal_num_from_hex = hexdec($hex_num);  // 十六进制转十进制
echo "{$bin_num}的十进制是:{$decimal_num_from_bin}\n";  // 输出二进制的十进制转换结果
echo "{$oct_num}的十进制是:{$decimal_num_from_oct}\n";  // 输出八进制的十进制转换结果
echo "{$hex_num}的十进制是:{$decimal_num_from_hex}\n";  // 输出十六进制的十进制转换结果

出力結果は次のとおりです:

100011的十进制是:35
43的十进制是:35
23的十进制是:35

2. 穴埋め操作

コンピュータでは、デジタル多くの場合、保存と操作はバイナリ形式で実行されます。場合によっては、特定の種類の算術演算の計算要件を満たすために、2 進数を「埋める」、つまり最上位ビットを 0 または 1 で埋める必要があります。 PHP で提供されるビットセット ライブラリは、このような「ビット充填」操作を完了できます。

2.1 ビットセット ライブラリのインストール

ビットセット ライブラリを使用するには、まずライブラリをインストールする必要があります。インストール手順は次のとおりです。

ステップ 1: ターミナルで次のコマンドを実行して、ビットセット ライブラリをインストールします。

composer require lucasassis/bitset

ステップ 2: コード内で、composer によって自動的に生成されたオートローダーを参照します。

require 'vendor/autoload.php';

2.2 ビット セットの作成

ビットセット ライブラリを使用してビット充填操作を実行する前に、まずビット セット (つまり、ビットセット) を作成する必要があります。ビット セットは連続したビットの集合であり、各ビットはバイナリ シンボル 0 または 1 です。

ビット セットを作成する関数は BitSet::create() で、そのパラメーターはビットの合計数であり、整数または文字列にすることができます。

use Lucasassis\BitSet;

$num_of_bits = 8;  // 位数
$bitset = BitSet::create($num_of_bits);  // 创建8位的bitset
echo "创建的{$num_of_bits}位bitset为:{$bitset}\n";

サンプルコードは以下の通りです。

创建的8位bitset为:00000000

出力結果は以下の通りです。

use Lucasassis\BitSet;

$num_of_bits = 8;  // 位数
$number = 35;  // 要进行加1操作的数字
$bitset = BitSet::create($num_of_bits);  // 创建8位的bitset
$bitset->setValue($number);  // 将$number值存入bitset中
echo "原数字:{$number},补位结果:";
echo $bitset->not()->add(1)->asBinaryString();  // 取反加1,输出结果

2.3 フィルイン演算

ビットを設定すると、フィルイン操作を実行できます。たとえば、2 進加算 1 の計算で、正しい 1 の加算結果を得るには、オペランド (つまり、1 を加算する数値) を「返して 1 を加算」する必要があります。

サンプル コードは次のとおりです。

原数字:35,补位结果:00100010

出力結果は次のとおりです。

rrreee

上記のコードでは、BitSet::setValue() 関数を使用して、 BitSet::not() 関数は反転演算を実行し、BitSet::add() 関数はインクリメント演算を実行し、BitSet::asBinaryString() 関数はバイナリ文字列の結果を出力します。

3. 概要

この記事では、PHP での基本変換とビット埋め込み操作を紹介します。基数変換はコンピュータ操作における重要な概念であり、デジタル データの表現と処理において重要な役割を果たします。フィルイン演算は、デジタル データ演算の結果を改善するために特定のアルゴリズムでよく使用される演算です。この記事が、読者がこれら 2 つの操作をよりよく理解し、適用するのに役立つことを願っています。

以上がPHPで16進数変換とビット埋め込みを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。