长度为 n 的二进制补码,bits0 是最高位也是符号位。十进制值就是题面给出的公式:
−bits0×2n−1+∑i=1n−1bitsi×2n−1−i
给定一个长度为 n 的二进制补码数组 bits,请计算并输出该补码所表示的十进制整数。
数组中的每个元素均为 0 或 1,其中 bits0 为最高位,同时也是符号位:
对于长度为 n 的补码,其对应的十进制值为
−bits0×2n−1+∑i=1n−1bitsi×2n−1−i
请根据给定的补码数组,求出其对应的十进制整数。
第一行输入一个整数 n,表示二进制补码的位数。
第二行输入 n 个整数 bitsi,每个整数为 0 或 1,按照从最高位到最低位的顺序给出,相邻整数之间用空格分隔。
1≤n≤31
bitsi∈0,1
输出一个整数,表示该二进制补码对应的十进制值。
输入
4
0 1 0 1
输出
5
说明
最高位为 0,表示该数为非负数。
二进制补码为 0101,其十进制值为
0×(−23)+1×22+0×21+1×20=5
因此输出 5。
输入
4
1 1 0 1
输出
-3
说明
最高位为 1,表示该数为负数。
根据补码的计算方式,其十进制值为
−1×23+1×22+0×21+1×20
=−8+4+1=−3
因此输出 −3。
输入
8
1 0 0 0 0 0 0 0
输出
-128
说明
对于 8 位补码,10000000 表示能够表示的最小整数。
其十进制值为
−27=−128
因此输出 −128。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册