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
上一篇: JS精确到指定位数的小数
下一篇: 把一个数组中的小数分离出