信息学奥林匹克竞赛初赛精讲精练
上QQ阅读APP看书,第一时间看更新

第二节 整数存储

基础知识

计算机中整数数值的存储并不是将其简单地转为二进制存入内存中即可,因为涉及正负数、减法问题,所以科学家们设计了一套整数的存储规则——三码。

原码

整数存储的时候,用最高位表示符号(0为正数、1为负数),之后几位存储二进制数值,例如:

这样设计有一个问题,-1+1=1010=-2,怎么办?

反码

负数的二进制使用反码:符号位不变,其他相反。

现在-1+1=1111=-0,可以接受。但是,0和-0的问题呢?

补码

负数用反码+1。

现在一切加法都完美了,0也只有一个了。

总结

1)正数的原码、补码、反码都是它本身。

2)负数的反码为原码(除符号位)取反,补码为反码加一。

3)计算机内存中存储的是补码。

4)因为存储的是补码,存储范围中的负数总比正数多一个(-0的原码被用来表示最小的负数)。

范例精讲

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

A. 43

B. -85

C. -43

D. -84

【正确答案】 B

|解析|

注意最高位是1,说明是个负数。

赛题训练

1.在字长为16位的系统环境下,一个16位带符号整数的二进制补码为1111111111101101。其对应的十进制整数应该是( )。

A. 19

B. -19

C. 18

D. -18