Wesley Chen SPE SYSU
Matlab 负数十进制转二进制代码
在 matlab 中,有 dec2bin(D,N)这个函数进行十进制对二进制的转换,但是要求十进制数 D
必须是正的。这里编写了代码包含了十进制正负整数对二进制的转换,负数的二进制数用补
码表示:
函数代码:存放在 dec2binPN.m 文件中;用 y=dec2binPN(-60,8)这样的方法调用
function [numbin] = dec2binPN(numdec,N)
%判断输入数正负
if (numdec >= 0)
%正数转二进制
numbin1 = dec2bin(numdec,N);
else
%负数转二进制
numbin1 = dec2bin(abs(numdec),N);
l1=length(numbin1);
numbin4=0;
for i=1:l1
if (numbin1(l1-i+1)==num2str(1))%按位取反,用十进制表示
numbin4=numbin4+0;
numbin4=numbin4+2^(i-1);
else
end
end
%末位加 1
numbin4=numbin4+1;
%把处理完的十进制数转成二进制,并输出在 numbin
numbin5=dec2bin(numbin4);
numbin1=num2str(numbin5,N);
end
numbin=numbin1;
end
Wesley Chen SPE SYSU
直接运行的代码:
clc
%输入的十进制数,可以是正数也可以是负数
numdec=-8
%输出的二进制数的位数
N=8;
%判断输入数正负
if (numdec >= 0)
%正数转二进制
numbin = dec2bin(numdec,N);
else
%负数转二进制
numbin = dec2bin(abs(numdec),N);
l1=length(numbin);
numbin4=0;
for i=1:l1
if (numbin(l1-i+1)==num2str(1))%按位取反,用十进制表示
numbin4=numbin4+0;
numbin4=numbin4+2^(i-1);
else
end
end
%末位加 1
numbin4=numbin4+1;
%把处理完的十进制数转成二进制,并输出在 numbin
numbin5=dec2bin(numbin4);
numbin=num2str(numbin5,N);
end
numbin