根据补码计算对应的十进制数--符号位为1

1.原码反码补码简介:

        原码是用最高位表示符号位的一种表示方法,即用最高位为0表示正数,用最高位为1表示负数,其余位表示数值的大小。

        反码是对原码进行取反操作得到的一种表示方法,即正数的反码和原码相同,负数的反码是将原码中除符号位之外的各位取反。

        补码是对原码或反码进行加1操作得到的一种表示方法,即正数的补码和原码相同,负数的补码是将反码加1。

        原码、反码和补码在计算机中广泛使用,可以用来表示整数的范围更广,同时可以简化加法和减法运算。

在认识了什么是原码反码补码是什么之后,我们再来进行下面的讲解

2.value Box  方法

        那么,什么是value Box方法呢,即二进制的每一位,都对应特定的权重,即从左向右,对应的权重是:-2^(n-1),   2^(n-2),   2^(n-3)......    举个例子:有5位二进制数(对应的是补码,符号位为1),那么从左向右,对应的权重就是 -2^4  2^3  2^2  2^1  2^0  ,如补码11011,对应的十进制数就是-5,那么根据value Box如何计算?,如下

        -2^(5-1) * 1 + 2^(5-2) * 1 + 2^(5-3) * 0 + 2^(5-4) * 1 + 2^(5-5) * 1 = -16+8+2+1 = -5

3.寻一取反法

        该方法的意思是,已知一个二进制数(对应的是补码,符号位为1),那么从右向左,找到第一个为1的数,然后该位左边的都取反,右边的不动,最后变成一个新二进制数,然后进行相应的权重计算(2^(n-1),   2^(n-2),   2^(n-3).....),得到一个新数字,再添符号即可得出答案。还是以11011为例子:从右向左找到第一个1,然后左边的取反,右边的不动则变为,00101,对应的二进制数为5,最后添-,11011(补码),对应的十进制数就是-5

         

你可能感兴趣的:(c语言)