二进制补码的转换

2021年8月14日 | 分类: 【编程】

【问题】

在8位二进制补码中,10101011 表示的数是十进制下的( )。

A. 43 B. -85 C. -43 D.-84

【解析】

原码、反码和补码:

首位0、1分别表示正、负。

正数的反码是它本身
负数的反码是它原码除符号位外按位取反

正数的补码是它本身
负数的补码是它的反码+1

1. 获得补码对应的反码:

补码:10101011
因为首位是1,所以这个补码是负数
那么这个补码的反码是补码末位-1,得到反码:10101010

2. 获得反码对应的原码:

将反码首位不变,其他位取反,得到原码:11010101

符号位为1表示这是个负数,1010101的十进制数是85。

答案是:-85,选项 B