加载中…
个人资料
FChChou
FChChou
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,323
  • 关注人气:8
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab实现十进制负整数数转换为补码/将补码转换为十进制数

(2014-04-08 17:42:18)
标签:

it

分类: MATLAB学习

如果要将负小数转换为二进制补码,则只需做数据缩放即可,即设置缩放因子:如十进制负小数为-0.8,则可以设置缩放因子为10,即将-0.8*10=-8之后再做转换,反转为十进制时,只需再将数据除以缩放因子10即可。

附程序如下

%% 十进制负整数数转换为补码
OMEGAt=8;
if OMEGAt<0
    OMEGAt_b=zeros(1,5);
    OMEGAt_b(1)=1;
    OMEGAt_b(2:5)=bitget(abs(OMEGAt),4:-1:1);
    OMEGAt_b(2:5)=xor(OMEGAt_b(2:5),ones(1,4));
    l=5;
    temp_l=l;
    while(temp_l~=1)
        if OMEGAt_b(temp_l)==0%最低位为0
            OMEGAt_b(temp_l)=1;
            temp_l=1;%结束循环
        else
            OMEGAt_b(temp_l)=0;
            temp_l=temp_l-1;
        end
    end
else
    OMEGAt_b=bitget(OMEGAt,5:-1:1);
end
OMEGAt_b
%% 补码转十进制
if OMEGAt_b(1)==1
    OMEGAt_b=zeros(1,5);
    OMEGAt_b1(1)=1;
    OMEGAt_b(2:5)=bitget(abs(OMEGAt),4:-1:1);
    OMEGAt_b1(2:5)=xor(OMEGAt_b(2:5),ones(1,4));
    l=5;
    temp_l=l;
    while(temp_l~=1)
        if OMEGAt_b1(temp_l)==0%最低位为0
            OMEGAt_b1(temp_l)=1;
            temp_l=1;%结束循环
        else
            OMEGAt_b1(temp_l)=0;
            temp_l=temp_l-1;
        end
    end
    OMEGAt_b1;
    OMEGAt_b2=num2str(OMEGAt_b1(2:5))
    OMEGAt=bin2dec(OMEGAt_b2)
    OMEGAt=-1*OMEGAt
else
    OMEGAt=bin2dec(num2str(OMEGAt_b))
end

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有