#NHTEA4647. 2022.南海区小学教师比赛.05.补码

2022.南海区小学教师比赛.05.补码

题目描述

小明正在准备 CSP 的初赛。老师正在讲原码反码补码的相关知识:“数是以二进制补码的形式记录在计算机里。如果一个数是正整数(包括 0 ),那么它的原码、反码和补码都是一样的,如果一个数是负整数(不包括 0 ),那么先将补码的每一位都取反(除去符号位),然后再加 1 ,就可以得出原码,进而求出该负整数的大小.....”

小明边听老师讲,边看老师发的资料:“原码是指一个整数本来的二进制形式、而反码就是对原码的每一位取反(除去符号位),补码可以理解为是在反码的基础上打了一个补丁进行修正。这三个码的最高位都是符号位,其中,正整数的符号位是0,负整数的符号位是1,符号位不参与计算与转化.....”

不知不觉,小明慢慢进入了梦乡。等他醒来时,却发现老师已经布置了相关作业:“给出一个数的补码,求出对应数字的十进制形式是多少”。你能帮助他吗?

输入格式

一个二进制补码。二进制补码固定为 32 位。

输出格式

一个整数,为对应数字的十进制形式。

数据范围

对于 30% 的数据,保证数据都是正整数;

对于 100% 的数据,保证符号位不会受到进位的干扰。

样例

00000000000000000000000000001011
11
10000000000000000000000000001011
-2147483637

样例解释

样例 1 : 最高位为 0 ,说明该二进制补码所对应的数字是正整数,其原码、反码与补码一致,因此直接将该码当做原码,并转化为十进制 11 。

样例 2 : 最高位为 1 ,说明该二进制补码所对应的数字是负整数,因此先将其取反(除去符号位)变为:

11111111111111111111111111110100

然后加 1 得出:

11111111111111111111111111110101

求出原码。然后再将原码转换为十进制整数 -2147483637 。