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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shaodongju/article/details/51578225
吃过猪肉的都知道,计算机是基于二进制数补码的,一般我们是怎样计算二进制补码的呢?如下(仅举一个简单的例子):

    正数: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的步骤。 

    那么问题来了,有没有统一的公式来将二进制的补码转换为十进制呢(不管是正值还是负值)? 有的,还以上面的例子为例,可用于同时处理正值和负值的一种方法是使用多项式求值,但是,最高有效位的数字具有不同的权重。不要使用,而要使用,如下:
     
     
    使用统一的公式,可以方便程序员的算法设计。
展开阅读全文

没有更多推荐了,返回首页