Main Content

bi2de

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

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

説明

d = bi2de(b) は、バイナリ行ベクトル b を 10 進数整数に変換します。

d = bi2de(b,flg) は、バイナリ行ベクトルを 10 進数整数に変換します。ここで、flg は最上位桁の位置を決定します。

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

d = bi2de(b,p,flg) は、基数が p の行ベクトルを 10 進数整数に変換します。ここで、flg は最上位桁の位置を決定します。

すべて折りたたむ

この例では、2 進数を 10 進数整数に変換する方法を示します。最上位桁の位置決めの左右での違いに注目します。

b1 = [0 1 0 1 1];
b2 = [1 1 1 0];

関数 bi2de を使用して、2 つの 2 進数配列を 10 進数に変換します。最上位桁を左端の要素に割り当てます。変換の出力では、b1 0 ( 2 4 ) + 1 ( 2 3 ) + 0 ( 2 2 ) + 1 ( 2 1 ) + 1 ( 2 0 ) = 1 1 b2 1 ( 2 3 ) + 1 ( 2 2 ) + 1 ( 2 1 ) + 0 ( 2 0 ) = 1 4 に対応します。

d1 = bi2de(b1,'left-msb')
d1 = 11
d2 = bi2de(b2,'left-msb')
d2 = 14

最上位桁を右端の要素に割り当てます。変換の出力では、b1 0 ( 2 0 ) + 1 ( 2 1 ) + 0 ( 2 2 ) + 1 ( 2 3 ) + 1 ( 2 4 ) = 2 6 b2 1 ( 2 0 ) + 1 ( 2 1 ) + 1 ( 2 2 ) + 0 ( 2 3 ) = 7 に対応します。

d1 = bi2de(b1,'right-msb')
d1 = 26
d2 = bi2de(b2,'right-msb')
d2 = 7

入力引数

すべて折りたたむ

バイナリ入力。行ベクトルまたは正の整数値あるいは logical 値の行列として指定します。

メモ

b は、252 以下の整数を表していなければなりません。

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

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

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

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

データ型: char | string

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

データ型: double | single

出力引数

すべて折りたたむ

10 進数の出力。非負の整数または行ベクトルとして返されます。b が行列の場合、各行は基数 p の数値を表します。この場合は、出力 d は列ベクトルで、その各要素は b の対応する行の 10 進表現です。

入力データ型に応じて、次のようになります。

  • 整数データ型と d の値は、入力と同じ整数データ型で格納できます。出力データ型には、入力と同じデータ型が使用されます。それ以外の場合、10 進数の出力を格納できる十分な大きさのデータ型が選択されます。

  • 入力データ型が double または logical データ型の場合、出力データ型は double です。

  • 入力データ型が single データ型の場合、出力データ型は single です。

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2021b: 非推奨

bi2de の代わりに bit2int を使用してください。2 進法の表現ではない数値を 10 進数に変換する場合は、base2dec を使用します。

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

非推奨の機能推奨される代替案
% Default (left MSB)
n = randi([1 100]); % Number of integers
bpi = 3;            % Bits per integer
x = randi([0,1],n*bpi,1);
y = bi2de(reshape(x,bpi,[])','left-msb')
% Default (left MSB)
n = randi([1 100]); % Number of integers
bpi = 3;            % Bits per integer
x = randi([0,1],n*bpi,1);
y = bit2int(x,bpi)
% Default row vector (or matrix) input
x = [0 1 1];
bi2de(x)
% Default row vector (or matrix) input
x = [0 1 1];
bit2int(x',length(x),0)'
% Right MSB, logical input
n = randi([1 100]); % Number of integers
bpi = 5;            % Bits per integer
x = logical(randi([0,1],n*bpi,1));
y = bi2de(reshape(x,bpi,[])','right-msb')
% Right MSB, logical input
n = randi([1 100]); % Number of integers
bpi = 5;            % Bits per integer
x = logical(randi([0,1],n*bpi,1));
y = bit2int(x,bpi,false)
% Right MSB, signed input, single input
n = randi([1 100]); % Number of integers
bpi = 8;            % Bits per integer
x = randi([0,1],n*bpi,1,'single');
y = bi2de(reshape(x,bpi,[])','right-msb');
N = 2^bpi;
y = y - (y>=N/2)*N
% Right MSB, signed input, single input
n = randi([1 100]); % Number of integers
bpi = 8;            % Bits per integer
x = randi([0,1],n*bpi,1,'single');
y = bit2int(x,bpi,false);
N = 2^bpi;
y = y - (y>=N/2)*N