Main Content

de2bi

(非推奨) 10 進数から基数 P への変換

de2bi は推奨されません。代わりに、関数 int2bit を使用してください。詳細については、バージョン履歴を参照してください。

説明

b = de2bi(d) は、非負の 10 進整数 d をバイナリ行ベクトルに変換します。d がベクトルの場合は、出力 b は行列で、各行は d の対応する要素のバイナリ形式です。

b = de2bi(d,n) は、n 列の出力をもちます。

b = de2bi(d,n,p) は、非負の 10 進整数 d を基数が p の行ベクトルに変換します。

b = de2bi(d,[],p) は、基数 p を指定します。

b = de2bi(d,___,flg)flg を使用して、b の 1 列目が最小次数を含むか最大次数を含むかを決定します。

すべて折りたたむ

この例では、10 進数を基数 2 の等価の 2 進数に変換する方法を示します。

d_array = [1 2 3 4];

関数 de2bi を使用して、10 進数の配列を 2 進数に変換します。左端の要素を最上位桁として指定し、目的の列の数を 5 に設定します。出力は、各行が入力の 10 進数値に対応する 4 行 5 列の行列になります。d_array の最大の 10 進数値は 3 列で表現できるため、de2bi は行列の指定された最上位ビット側にゼロの列を 2 列付加します。指定する列が少なすぎると変換は失敗します。

b_array = de2bi(d_array,5,'left-msb')
b_array = 4×5

     0     0     0     0     1
     0     0     0     1     0
     0     0     0     1     1
     0     0     1     0     0

b_array = de2bi(d_array,5,'right-msb')
b_array = 4×5

     1     0     0     0     0
     0     1     0     0     0
     1     1     0     0     0
     0     0     1     0     0

列数を指定しない場合、列数は入力の最大の 10 進数を表現するために必要な数になります。

b_array = de2bi(d_array,'left-msb')
b_array = 4×3

     0     0     1
     0     1     0
     0     1     1
     1     0     0

左端を最上位ビットに指定する場合の出力行は以下に対応します。

1 = 0 ( 2 2 ) + 0 ( 2 1 ) + 1 ( 2 0 )

2 = 0 ( 2 2 ) + 1 ( 2 1 ) + 0 ( 2 0 )

3 = 0 ( 2 2 ) + 1 ( 2 1 ) + 1 ( 2 0 )

4 = 1 ( 2 2 ) + 0 ( 2 1 ) + 0 ( 2 0 )

b_array = de2bi(d_array,'right-msb')
b_array = 4×3

     1     0     0
     0     1     0
     1     1     0
     0     0     1

右端を最上位ビットに指定する出力行は以下に対応します。

1 = 1 ( 2 0 ) + 0 ( 2 1 ) + 0 ( 2 2 )

2 = 0 ( 2 0 ) + 1 ( 2 1 ) + 0 ( 2 2 )

3 = 1 ( 2 0 ) + 1 ( 2 1 ) + 0 ( 2 2 )

4 = 0 ( 2 0 ) + 0 ( 2 1 ) + 1 ( 2 2 )

入力引数

すべて折りたたむ

10 進数入力。非負の整数、ベクトル、または行列として指定します。d が行列の場合、列ベクトル d(:) と同様に扱われます。

メモ

変換が正確に行われるようにするには、d252 以下でなければなりません。

データ型: double | single | integer | fi

正のスカラーで指定される出力列の数。必要に応じて、d のバイナリ表現には、ゼロが付加されます。

データ型: double | single

出力 b の基数。2 以上の整数として指定します。

  • d がベクトルの場合、出力 b は行列であり、その各行は d の対応する要素を基数 p 形式にしたものになります。

  • d が行列の場合、de2bi はそれをベクトル d(:) のように扱います。

データ型: double | single

MSB フラグ。'right-msb' または 'left-msb' として指定します。

  • 'right-msb' –– バイナリ出力 b の右 (または最後) の列を最上位ビット (または最上位桁) として示します。

  • 'left-msb' –– バイナリ出力 b の左 (または最初) の列を最上位ビット (または最上位桁) として示します。

データ型: char | string

出力引数

すべて折りたたむ

d のバイナリ表現。行ベクトルまたは行列として返されます。出力のデータ型は入力のデータ型と同じです。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2021b: 非推奨

de2bi の代わりに int2bit を使用してください。数値表現を 10 進数から 2 以外の基数に変換するには、dec2base を使用します。

次の表に記載するコードは、推奨される関数を使用した、各種入力の 10 進数から 2 進数への変換を示しています。

非推奨の機能推奨される代替案
% Default (left MSB)
n = randi([1 100]); % Number of integers
bpi = 3;            % Bits per integer
x = randi([0,2^bpi-1],n,1);
y = reshape(de2bi(x,bpi,'left-msb')',[],1)
% Default (left MSB)
n = randi([1 100]); % Number of integers
bpi = 3;            % Bits per integer
x = randi([0,2^bpi-1],n,1);
y = int2bit(x,bpi)
% Default vector (or scalar) input
x = [4 5 9];
y = de2bi(x)
% Default vector (or scalar) input
x = [4 5 9];
y = int2bit(x,ceil(log2(max(x) + 1)), 0)'
% Right MSB
n = randi([1 100]); % Number of integers
bpi = 5;            % Bits per integer
x = randi([0,2^bpi-1],n,1);
y = reshape(de2bi(x,bpi,'right-msb')',[],1)
% Right MSB
n = randi([1 100]); % Number of integers
bpi = 5;            % Bits per integer
x = randi([0,2^bpi-1],n,1);
y = int2bit(x,bpi,false)
% Right MSB, signed input
n = randi([1 100]); % Number of integers
bpi = 8;            % Bits per integer
N = 2^bpi;
x = randi([-N/2,N/2-1],n,1);
y = reshape(de2bi(x+(x<0)*N,bpi,'right-msb')',[],1)
% Right MSB, signed input
n = randi([1 100]); % Number of integers
bpi = 8;            % Bits per integer
N = 2^bpi;
x = randi([-N/2,N/2-1],n,1);
y = int2bit(x+(x<0)*N,bpi,false)