欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matlab 实现二进制与十进制相互转换

程序员文章站 2022-07-15 09:34:46
...

dec2bin():该函数实现从十进制到二进制的转换。调用格式:b=dec2bin(a)。其中b为二进制,a为十进制。
bin2dec():该函数实现从二进制到十进制的转换,调用格式:a=bin2dec(b)。其中b为二进制,a为十进制。参数b的数据类型是字符型
需要注意的是:在使用上述函数的时候,只能实现非负整数与二进制数之间的转化,如果使用负整数的时候会出现错误。

二进制数转换十进制数据如下:
%%%%%%%
cstr0 = textread('C:\Users\xxxx.txt','%s');   % 输入txt文件
cstr1 = textread('C:\Users\xxx.txt','%s');   % 输入txt文件
%%%%%%%%%%
m = 24;						% 数据位宽
Max_data = 2^(m-1) - 1;
B_to_Ddatalength = length(cstr0);			% 需要转换的数字个数
%%%%%%%%%
data0 = zeros(B_to_Ddatalength,1);		
for i=1:B_to_Ddatalength
    data0(i) = bin2dec( cstr0{i} );	%将所有二进制数转换为无符号位十进制数
    if(data0(i)>Max_data)					% 如果结果大于
            data0(i)=bin2dec(cstr0{i})-2^m;				% 转换为负数
    end
end

data1 = zeros(B_to_Ddatalength,1);		
for i=1:B_to_Ddatalength
    data1(i) = bin2dec( cstr1{i} );	%将所有二进制数转换为无符号位十进制数
    if(data1(i)>Max_data)					% 如果结果大于
            data1(i)=bin2dec(cstr1{i})-2^m;				% 转换为负数
    end
end

十进制数转换二进制数据如下:

N = 24;    %位宽长度
D_to_Bdatalenth = 2048;  %数据长度

%%选择数据长度
data0 = data0(2:end);
data1 = data1(2:end);

if (data0 >= 0)
    bin_0 = dec2bin(data0, N);        % 正数的反码和补码都和原码一样
else
    bin_0 = dec2bin(2^N + data0, N);
end

fid = fopen('C:/xxx.txt', 'wt');
for i=1:D_to_Bdatalenth
       fprintf(fid, '%s\n', char(bin_0(i,1:N)));
end
fclose(fid)

if (data1 >= 0)
    bin_1 = dec2bin(data1, N);        % 正数的反码和补码都和原码一样
else
    bin_1 = dec2bin(2^N + data1, N);
end