de2bi
(不推荐)将十进制转换为以 P 为基数
说明
示例
此示例说明如何将十进制数转换为其以 2 为基数的等效二进制数。
d_array = [1 2 3 4];
使用 de2bi 函数将十进制数组转换为二进制。指定最高有效位为最左侧元素,并将所需列数设置为 5。输出变为 4×5 矩阵,其中每行对应于输入中的一个十进制值。由于 d_array 中的最大十进制值可以用 3 列表示,因此 de2bi 在指定的最高有效位侧用两个额外的零列填充矩阵。如果您指定的列数太少,转换将失败。
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
如果您未指定列数,则列数恰好是表示输入中最大十进制数所需的列数。
b_array = de2bi(d_array,'left-msb')b_array = 4×3
0 0 1
0 1 0
0 1 1
1 0 0
指定最左侧有效位的输出行对应于:
b_array = de2bi(d_array,'right-msb')b_array = 4×3
1 0 0
0 1 0
1 1 0
0 0 1
指定最右侧有效位的输出行对应于:
输入参数
十进制输入,指定为非负整数、向量或矩阵。如果 d 是矩阵,则将其视为列向量 d(:)。
注意
为确保准确转换,d 必须小于或等于 252。
数据类型: double | single | integer | fi
输出列数,指定为正标量。如有必要,用额外的零填充 d 的二进制表示。
数据类型: double | single
MSB 标志,指定为 'right-msb' 或 'left-msb'。
'right-msb'- 表示二进制输出b的右侧(即最后一个)列为最高有效位(即最高位)。'left-msb'- 表示二进制输出b的左侧(即第一个)列为最高有效位(即最高位)。
数据类型: char | string
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
版本历史记录
在 R2006a 之前推出使用 int2bit 替代 de2bi。如果要将数的表示从十进制转换为基数不是 2 的表示形式,请使用 dec2base。
下表中的代码展示使用推荐的函数对各种输入进行十进制到二进制的转换。
| 不推荐的功能 | 推荐的替代项 |
|---|---|
% 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) |
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)