【天津ddos源码】【new macd公式源码】【斗鱼视频代源码】10的二进制的源码_10的二进制代码

2025-01-31 15:51:28 来源:获取网页源码js 分类:时尚

1.用matlab十进制与二进制转化
2.matlab 编写一个程序实现十进制数转换为二进制数?

10的二进制的源码_10的二进制代码

用matlab十进制与二进制转化

       æ¯”如你要将5.转换为2进制,保留位小数

       n=5.;

       m=;%保留位小数

       d=n*2^m;

       [f,e]=log2(d);

       a=char(mod(floor(d*2.^(1-e:0)),2)+'0');

       a=[a(1:end-m),'.',a(end-m+1:end)]

matlab 编写一个程序实现十进制数转换为二进制数?

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

       收藏 次阅读 | 4 个评论 -- :

       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 smaller than 2^.

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

        N bits.

        Example

        dec2bin() returns ''

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

       1.小数转换为二进制数

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

       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;

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

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

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

       注意,这里有一个小问题,就是dec2bin函数的返回值是一个char array,所以,我们应该先将其转换为double array!可以利用double()进行强制类型转换,得到ASCII码值,减去就可以得到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)-;

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

       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

更多资讯请点击:时尚

推荐资讯

福建公布外卖平台“点题整治”成果 4197户经营不规范商户被下线

中国消费者报福州讯记者张文章)2月6日,福建省纪委监委公布2022年度16项“点题整治”群众身边腐败和不正之风工作成果。其中,福建省市场监管局牵头包括联合牵头)开展“整治脏乱差店家入驻外卖平台问题,强

梦幻西游端源码使用_梦幻西游端源码使用教程

1.梦幻西游外网架设教程-端游篇2.求个梦幻西游自动喊话脚本 或按键精灵 源码梦幻西游外网架设教程-端游篇 搭建梦幻西游外网环境,以下是详细步骤: 必备工具:GGE, 服务端, 客户端, 服务

9牛棋牌源码网

1.燕多少笔画?2.棋牌游戏的发展历史!有人的地方就有江湖3.龙港三副头源码4.余干六副牌怎么玩?棋牌源码开发重要吗?5.开发个网页游戏有多难?燕多少笔画ï