matlab实现十进制小数转换为二进制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab实现十进制小数转换为二进制
这段程序源于网上
********小于1的小数转换为二进制*********** function y=dectobin(innum,N)
%十进制小数转换为二进制数
%输入参数为innum和N
%innum为输入的十进制小数
%N为指定转换后二进制的位数
if (innum>1)|(N == 0)%判断输入的有效性
disp('error!');
return;
end
count=0;
tempnum=innum;
record=zeros(1,N);
while(N)
count=count+1;%长度小于N
if(count>N)
N=0;
% return;
end
tempnum=tempnum*2;%小数转换为二进制,乘2取整
if tempnum>1
record(count)=1;
tempnum=tempnum-1;
elseif(tempnum==1)
record(count)=1;
N=0;%stop loop
else
record(count)=0;
end
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为取余函数
numint=dec2bin(innum);
numint=double(numint)-48;
numf=zeros(1,N);
num=[numint,sep,numf];
return
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异或)。