分享

NOIP初赛复习(八)原码、补码、反码

 长沙7喜 2018-04-16

 定期推送信息学新闻竞赛自主招生信息学专业知识信息学疑难解答,融科教育信息学竞赛培训等诸多优质内容的微信平台,欢迎分享文章给你的朋友或者朋友圈


数在机器中的表示有以下几种:原码、反码、补码。

原码、反码、补码的基本概念

字节:8个位。

字长:若干个字节。到底是几个字节?具体看是哪种CPU。比如2010普及组第11题就假设一个字长只有一个字节8个位。

原码、反码、补码都是建立在机器数在一个字长上的表示。为了方便理解,我们假设字长为一个字节。要注意事实上为32CPU字长为4个字节,64CPU字长为8个字节。

原码:首位为符号位,其余为真值。比如:

特点:简单。

范围:比如字长为8位,则范围为 11111111(-255)至 01111111(+255)。

缺点:0有两个表示,分别为正零(00000000)和负零(10000000),给计算机计算带来不便。

反码:首位为符号位,其它位分正数和负数两种情况。

反码正数:所有位和原码一样;

反码负数:除了符号位和原码一样,其他位相反。

比如:77的反码表示为01001101;-77的反码表示为10110010

补码:分正数和负数两种情况。

补码正数:所有位和反码一样,当然也和原码一样。

补码负数:等于反码加1。简单的一句话,其实很麻烦。

比如:77的补码表示为01001101(和原码、反码一致);-77的补码表示为10110011

1之后会有进位,因为补码没有符号位,所以负零的补码表示也是00000000

特点:表示比补码更麻烦。但是解决了一个问题:0只有一种表示。


原码

反码

补码

正零

00000000

00000000

00000000

负零

10000000

11111111

00000000

补码加法:在计算机中,凡是带符号数一律用补码表示,运算结果自然也是补码。其运算特点是:符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位)。

补码加法的运算规则为:

 

 即:两数补码的和等于两数和的补码。

【例】已知 [+51]=0011 0011[+66]=0100 0010[-51]=1100 1101;

         求:[+66]+[+51]=?,[+66]+[-51]= 

【解】:

1)由于 [+51]=0011 0011[+66]=0100 0010

  [+66]+[+51]=[(+66)+(+55)]=01110101 

结果为正,因此

 [(+66)+(+55)]=[(+66)+(+55)]=01110101 

其真值为+117,计算结果正确。

2)由于 [+66]=0100 0010[-51]=1100 1101


每日练习

 1、无符号二进制数11001000所表示的十进制数为___________ 

  A .104  B. 148  C. 172 D . 200

2、有符号二进制数11001000所表示的十进制数为___________ 

  A . -200   B. -72  C. 72  D . 200

3、16位和8位机器码分别写出十进制数+58和—58的原码、反码和补码。

4若用8位机器码表示十进制数101,则原码表示的形式为  1    ;

补码表示的形式为2  

1A.11100101    B.10011011    C.11010101  D.11100111

2A.11100101    B.10011011    C.11010101  D.11100111

5、已知一个字长为8的整数的原码是10011010,求它的补码。

6、已知一个字长为8的整数的补码是10011000,求它的原码。


历年真题

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

   A.19     B.-19     C.18     D.-18

2、一个字长为8位的整数的补码是11111001,则它的原码是( )。

   A.00000111     B.01111001     C.11111001    D.10000111

3、在整数的补码表示法中,以下说法正确的是( )。

   A.只有负整数的编码最高位为1

   B.在编码的位数确定后,所能表示的最小整数和最大整数的绝对值相同

   C.整数0只有一个唯一的编码

   D.两个用补码表示的数相加时,如果在最高位产生进位,则表示运算溢出


原码反码补码每日练习参考答案:

1D  2

3+5816位原码:0000 0000 0011 1010

反码:0000 0000 0011 1010             

补码:0000 0000 0011 1010

+588位原码:0011 1010    反码:0011 1010    补码:0011 1010

-5816位原码:1000 0000 0011 1010

反码:1111 1111 1100 0101

补码:1111 1111 1100 0110

-588位原码:1011 1010    反码:1100 0101   补码:1100 0110

4、(1 A  (2) B

51110 0110     61110 1000

原码反码补码历年真题参考答案:1B  2A  3AC


另:为感谢各位家长一直以来对融科信息学的信任与支持,在双十二来临之际,特推出双十二底价团购信息学课程,详情点击链接→融科教育双十二同学“惠”,信息学课程底价疯狂抢!(←点击链接,了解活动详情吧)

长沙信息学竞赛

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多