#161. [GESP 模拟三级] 变换原码
[GESP 模拟三级] 变换原码
题目背景
小明在上课时学到了如何计算一个数的补码。
- 正数的原码是其二进制形式,最高位为符号位(值为
0)。 - 负数的原码是其对应正数的二进制形式,最高位为符号位(值为
1)。
反码:
- 正数的反码是其原码本身;
- 负数的反码是:符号位不变,其余位取反。
补码:
- 正数的补码是其原码本身;
- 负数的补码是其反码加 1。
举个例子:
-
8的原码:00001000 -
-8的原码:10001000 -
8的反码:00001000 -
-8的反码:11110111 -
8的补码:00001000 -
-8的补码:11111000
题目描述
现在,老师给了小明一个 01数组(即只包含 0 和 1 的数组),这个数组表示一个二进制数(包含符号位)。数组第一位为符号位(0 表示正数,1 表示负数)。
小明的任务是将这个数组表示的数字转换为它的补码形式(仍然是 01 数组)。他觉得这个问题太简单了,决定交给你来完成。
输入格式
- 第一行一个整数 ,表示该二进制数的位数。
- 第二行 个整数,每个整数为 或 ,表示从高位到低位的原码(包含符号位)。
输出格式
- 输出一行 个整数,从高位到低位,表示该二进制数的补码形式(仍为 01 数组形式)。
10
1 0 0 1 0 1 1 1 0 1
1 1 1 0 1 0 0 0 1 1
数据范围
- 对于 100% 的数据,