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

这篇博客介绍了MATLAB中如何使用dec2bin和bin2dec函数进行二进制与十进制之间的转换,特别是在处理非负整数时的注意事项。代码示例展示了读取txt文件中的二进制字符串,转换为十进制,并根据数据位宽判断是否需要转换为负数。此外,还展示了将十进制数转换回指定位宽的二进制字符串并保存到文件的过程。
摘要由CSDN通过智能技术生成

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

  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值