先写位宽和解释方式,再看最高位

8位补码不是“二进制前面有1就添一个负号”。在题目已约定有符号补码的前提下,八个位从左到右的权重是-128、64、32、16、8、4、2、1。一个位置为1,就把该位置的权重加进来。

因此10000000的值为-128;11111111的值为-128+64+32+16+8+4+2+1=-1。知英教育建议先把“8位、有符号、补码”写在草稿开头,避免把同一位串当成无符号数读取。

正十三转换为负十三补码的取反加一步骤
演算图:固定八位,自编例子;正文同时给出位权验算。

同一位串,为什么会得到两个数

位串10000000按无符号八位整数读取时,最左位权重为128,结果是128;按有符号补码读取时,最左位权重为-128,结果是-128。差异来自题目规定的解释方式,不是二进制位串自己发生了变化。

8位补码能表示-128到127。正数最大是01111111,负数最小是10000000;零只有00000000这一种表示。不要把“第一位是符号,其余七位是绝对值”的原码读法直接搬过来。

用负13检查取反加一

正13写成00001101,逐位取反得到11110010,再加1得到11110011。按位权复核:-128+64+32+16+2+1=-13。这是独立编写的练习,不是软考原题。

八位有符号补码最大正数和最小负数边界
边界图:不能把超出范围的正128强行解释为同一八位补码值。

知英教育建议转换后再做一次位权求和;只背取反加一,容易漏掉位宽或把加1写错。最小负数是一个重要边界:对10000000在同样八位中取反加一,仍得到10000000,因为正128超出了这一表示范围,不能据此说它等于正128。

最后核对是不是同一道问题

做8位补码练习时,分别检查题目问的是读数、求相反数,还是判断运算是否溢出。进位与有符号溢出不是同一个概念,本文的读数方法也不能直接当成某种编程语言的溢出行为规定。

知英教育可帮助你定位位宽、符号和位权哪一步混淆。查看软件设计师学习说明,通过咨询入口提供位串与自己的演算;不需要考试账号,也不作分数承诺。

来源与说明

图示和例子为原创辅助说明,不代表客户结果;材料要求与考试规定以相应主管部门正式信息为准。