如何使用统一的公式表示二进制的补码

吃过猪肉的都知道,计算机是基于二进制数补码的,一般我们是怎样计算二进制补码的呢?如下(仅举一个简单的例子):

    正数:01110110(2)=64+32+16+4+2=118(10);
    负数:10100111(2)
               1、二进制取反后+1,得到:-01011001(2);
               2、-01011001(2)=-(64+16+8+1)=-89(10);
    可以看出,对于二进制补码表示而言,正数转换为十进制表示很方便,但负数要经过二进制取反后加1的步骤。 

    那么问题来了,有没有统一的公式来将二进制的补码转换为十进制呢(不管是正值还是负值)? 有的,还以上面的例子为例,可用于同时处理正值和负值的一种方法是使用多项式求值,但是,最高有效位的数字具有不同的权重。不要使用,而要使用,如下:
     
     
    使用统一的公式,可以方便程序员的算法设计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值