matlab实现十进制小数转换为二进制
(2014-01-21 18:51:58)
标签:
it |
分类: MATLAB学习 |
这段程序源于网上
********小于1的小数转换为二进制***********
function
y=dectobin(innum,N)
%十进制小数转换为二进制数
%输入参数为innum和N
%innum为输入的十进制小数
%N为指定转换后二进制的位数
if (innum>1)|(N ==
0)%判断输入的有效性
end
count=0;
tempnum=innum;
record=zeros(1,N);
while(N)
%
return;
end
y=record;
**********正小数转换为二进制数***********
function
[num,numint,numf]=xiaoshu2bin(innum,N)
%十进制数转换为二进制数
%输入为十进制数innum,以及小数部分的位数N
%输出为三个参数num,numint,numf
%num为输出的二进制形式
%numint为整数部分的二进制表达式
%numf为小数部分的二进制表达式
sep='.';%整数和小数部分的分隔符
clc;
if(mod(innum,1)==0)%判断输入是否为整数,mod为取余函数
end;
%输入为非整数的情况
nint=floor(innum);%整数部分
nf=innum-nint;%小数部分
res_nint=dec2bin(nint);
res_nint=double(res_nint)-48;
res_nf=dectobin(nf,N);
numint=res_nint
numf=res_nf;
%
num=[numint,sep,numf];
num=strcat(num2str(numint),'.');
num=strcat(num,num2str(numf));
%其中的dectobin函数就是小于1的小数转二进制函数
如果是负数,则需转换为二进制补码,符号位为1,其他位在转换为二进制后还要按位取反再加1,按位取反可以用异或xor实现(和1异或)。