matlab实现十进制小数转换为二进制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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异或)。

相关文档
最新文档