1.5 带符号数表示法


1.5 带符号数表示法

原码、反码、补码带上符号位均为8位

  1. 原码表示法
    原码(True Form)表示法是在二进制数值之前加一个符号位。通常用0表示正数,用1表示负数,后面的数位表示数的大小。
    例:分别写出 (+11)10 和 (-11)10 的8位二进制原码。

    image-20210903174858521 image-20210903174909722
  2. 反码表示法
    反码(One's Complement)表示法的符号位表示与原码相同,数值位表示的规则如下:对于正数,其数值位与原码表示法中相同;对于负数,除符号位以外,其余各位取反就得到了数值位。
    例:分别写出 (+11)10 和 (-11)10 的8位二进制反码。

    (+11)10 = (+1011)2 = (+0001011)2 = (00001011)反码
    (- 11)10 = (- 1011)2 = (-0001011)2 = (11110100)反码

  3. 补码表示法
    计算机中通常采用的带符号数表示法是补码(Complement)表示法,其规则:对于正数,补码与原码相同;对于负数,符号位仍为1,二进制数值位要按位取反,然后末位加1。也就是在反码的基础上加1。
    例:分别写出 (+11)10 和 (-11)10 的8位二进制补码。
    (+11)10 = (+1011)2 = (+0001011)2 = (00001011)反码 = (00001011)补码
    (- 11)10 = (- 1011)2 = (-0001011)2 = (11110100)反码 = (11110101)补码

    需要指出,当带符号数为纯小数时,原码或补码的符号位在小数点的前面,原来小数点前面的0不再表示出来。
    例:分别计算 (0.01101) 和 (- 0.01101)2 的8位二进制原码、反码和补码。
    (0.01101)2 = (0.0110100)原码 = (0.0110100)反码 = (0.0110100)补码
    (-0.01101)2 = (1.0110100)原码 = (1.1001011)反码 = (1.1001100)补码

  4. 带符号数的补码运算
    利用补码,可以方便地进行带符号数的加、减运算。运算过程中需要注意的是,同号相加或异号相减时,有可能发生溢出(Overflow)。溢出是指运算结果超出了原制定位数所能表示的带符号数范围。发生溢出时需要增加二进制补码的位数

    image-20211008171727923

image-20210903175956748
采用补码加法运算时,运算结果仍为补码。对于字长为8位的运算器,只保留8位运算结果,最高位向上的进位“1”自动丢失。当结果的符号位为0时,结果为正,否则,结果为负。

image-20210903180046421

不同符号的反码相加,如果发生溢出,最高位上的进位1自动丢失

相同符号位的反码相加,如果发生溢出,只能增加补码的位数

image-20210903180243099


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM