dec2bin(DEC2BIN公式)

拳击036

今天给各位分享dec2bin的知识,其中也会对DEC2BIN公式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于MATLAB中dec2bin函数的使用

dec2bin()是把整数转化为二进制整数

如果输入的是double数那么会向下取整后转化为二进制数。

注意:输入不能为负数。

所以an应该是这样的矩阵:每个元素都是这10个数中某个数的二进制表示形式。

matlab中,de2bi什么意思。

如果rxbits1是一个数的话,无所谓。

但是如果rxbits是一个向量的话,那你就得先转轶了,因为matlab是列优先的。

你自己看一下:

rxbits1=10;

a=dec2bin(rxbits1)

%十进制转换为二进制,这个我理解

b=a';

c=b(:);

rxbits=c'

rxbits1=[10,12];

a=dec2bin(rxbits1)

%十进制转换为二进制,这个我理解

b=a';

c=b(:);

rxbits=c'

matlab的dec2bin1函数与dec2bin函数的区别

dec2bin()是matlab自带的函数,它把非负的数字向下取整转成二进制的字符串输出;

dec2bin1()应该是一个自定义的函数;

想要看具体函数的内容可以输入edit

xxx来查看函数定义的m文件。

dec2bin(DEC2BIN公式),第1张

matlab中编写函数求任意的二进制转小数

matlab提供了一个系统函数dec2bin,可以用来进行十进制数的二进制转换,不过功能有限!

在matlab中键入 help dec2bin,如下:

DEC2BIN Convert decimal integer to a binary string.

DEC2BIN(D) returns the binary representation of D as a string.

D must be a non-negative integer *** aller than 2^52.

DEC2BIN(D,N) produces a binary representation with at least

N bits.

Example

dec2bin(23) returns '10111'

可见,这个函数只能转换整数,对非整数就无能为力了.因此,自己编写了matlab小程序,顺便也贴出来,希望对需要的人能有所帮助!^_^

1.小数转换为二进制数

输入参数有2个,一个是输入的小数(小于1),一个是指定转换后的二进制位数!程序源码如下:

y=dectobin(innum,N)

%十进制小数转换为二进制数

%输入参数为innum和N

%innum为输入的十进制小数

%N为指定转换后二进制的位数

if (innum1)|(N == 0)%判断输入的有效性

disp('error!');

return;

end

count=0;

tempnum=innum;

record=zeros(1,N);

while(N)

count=count+1;%长度小于N

if(countN)

N=0;

% return;

end

tempnum=tempnum*2;%小数转换为二进制,乘2取整

if tempnum1

record(count)=1;

tempnum=tempnum-1;

elseif(tempnum==1)

record(count)=1;

N=0;%stop loop

else

record(count)=0;

end

end

y=record;

2.如果要转换整数,则直接调用matlab的dec2bin即可!

3.对于大于1的非整数,可以利用将其分为整数部分和小数部分的 *** 来处理:

利用matlab的floor函数可以对输入的数(设为innum)向下取整,然后利用innum-floor(innum)就可以得到小数部分,调用上面的函数就可以得到其二进制表达式!

注意,这里有一个小问题,就是dec2bin函数的返回值是一个char array,所以,我们应该先将其转换为double array!可以利用double()进行强制类型转换,得到ASCII码值,减去48就可以得到double array类型的0,1序列!

程序代码如下:

[num,numint,numf]=dectobin1(innum,N)

%十进制数转换为二进制数

%输入为十进制数innum,以及小数部分的位数N

%输出为三个参数num,numint,numf

%num为输出的二进制形式

%numint为整数部分的二进制表达式

%numf为小数部分的二进制表达式

sep=5;%整数和小数部分的分隔符

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];

其中的dectobin函数就是最上面的小数转二进制函数!

4.似乎已经大功告成了,是吗?NO,还有一个问题,那就是负数的情况,在这里,我们采用补码的方式,如果输入为正,则二进制表达式不变,如果为负,则按位取反并加1.因此,需要对上面的函数加上一个负数判断以及补码转换的功能.最终的表示结果可以采用1QN的格式.补码转换部分程序如下:

[numo,numinto,numfo]=conv(numint,numf,flag)

%二进制数的补码表示

%输入参数为numint整数部分的二进制表达式,numf小数部分二进制表达式,flag负数标志

%输出参数为numo输入的补码,numinto整数部分的补码,numfo小数部分的补码

if (flag==0)

numo=[0,numint,5,numf];%正数

numinto=numint;

numfo=numf;

else%负数,整数和小数部分均进行按位取反并加一

l1=length(numint);

l2=length(numf);

num=[numint,numf];

l=l1+l2;

for i=1:l

if num(i)==1%按位取反

num(i)=0;

else

num(i)=1;

end

end

%取反后加一

temp_l=l;

while(temp_l~=0)

if num(temp_l)==0%更低位为0

num(temp_l)=1;

temp_l=0;%结束循环

else

num(temp_l)=0;

temp_l=temp_l-1;

end

end

% l1=length(numint);

% for i=1:l1

%

% if numint(i)==1%按位取反

% numint(i)=0;

% else

% numint(i)=1;

% end

%

% end

%

% l2=length(numf);

% for i=1:l2

%

% if numf(i)==1%按位取反

% numf(i)=0;

% else

% numf(i)=1;

% end

%

% end

%

% %取反后加一

% temp_l1=l1;

% while(temp_l1~=0)

% if numint(temp_l1)==0%更低位为0

% numint(temp_l1)=1;

% temp_l1=0;%结束循环

% else

% numint(temp_l1)=0;

% temp_l1=temp_l1-1;

% end

% end

%

% %取反后加一

% temp_l2=l2;

% while(temp_l2~=0)

% if numf(temp_l2)==0%更低位为0

% numf(temp_l2)=1;

% temp_l2=0;%结束循环

% else

% numf(temp_l2)=0;

% temp_l2=temp_l2-1;

% end

numinto=num(1:l1);

numfo=num(l1+1:l);

% numinto=numint;

% numfo=numf;

numo=[1,numinto,5,numfo];

end

5.最后,用一个main函数连接以上的子函数

[numo,numinto,numfo]=decimal2bin(innum,N)

[num1,numint1,numf1,flag1]=dectobin1(innum,N);

[numo,numinto,numfo]=conv(numint1,numf1,flag1)

关于dec2bin和DEC2BIN公式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。