#6769. 补码
补码
题目描述
小明正在准备CSP的初赛。老师正在讲原码反码补码的相关知识:“数是以二进制补码的形式记录在计算机里。如果一个数是正整数(包括0),那么它的原码、反码和补码都是一样的,如果一个数是负整数(不包括0),那么先将补码的每一位都取反(除去符号位),然后再加1,就可以得出原码,进而求出该负整数的大小.....” 小明边听老师讲,边看老师发的资料:“原码是指一个整数本来的二进制形式、而反码就是对原码的每一位取反(除去符号位),补码可以理解为是在反码的基础上打了一个补丁进行修正。这三个码的最高位都是符号位,其中,正整数的符号位是0,负整数的符号位是1,符号位不参与计算与转化.....” 不知不觉,小明慢慢进入了梦乡。等他醒来时,却发现老师已经布置了相关作业:“给出一个数的补码,求出对应数字的十进制形式是多少”。你能帮助他吗?
输入格式
一行,一个二进制补码。二进制补码固定为32位。
输出格式
输出一个整数,为对应数字的十进制形式。
00000000000000000000000000001011
11
10000000000000000000000000001011
-2147483637
数据规模与约定
对于30%的数据,保证数据都是正整数; 对于100%的数据,保证符号位不会受到进位的干扰。
【样例说明】 样例1中,最高位为0,说明该二进制补码所对应的数字是正整数,其原码、反码与补码一致,因此直接将该码当做原码,并转化为十进制11。 样例2中,最高位为1,说明该二进制补码所对应的数字是负整数,因此先将其取反(除去符号位)变为: 11111111111111111111111111110100 然后加1得出: 11111111111111111111111111110101 求出原码。然后再将原码转换为十进制整数-2147483637。