• 原码、反码和补码


    1. 原码

    正数的符号位用0表示,负数用1表示,其余位为数值,这种表示方法称为原码。

    X=+105,[X]=0110 1001

    Y=-105,[Y]=1110 1001

    原码简单易懂,与真值的换算也很方便,但若要进行两个异号数相加或者两个同号数相减的运算,就要做减法操作。然而在一般的计算机中是没有减法运算部件的,减法运算也要用加法部件实现,所以要引进反码和补码。

    1. 反码

    正数的反码与原码相同,最高位为符号位,用0表示,其余位为数值。

    [X]=0110 1001

    负数的反码为它的正数按位取反,即连同符号位一同取反。

    [Y]=1001 0110

    所以,8位二进制数表示的反码范围为-127+127。当带符号数用反码表示时,最高位为符号位,当它为正数时,后7位为真正的值,当它为负数时,后7位要取反后才能得到真正的值。

    1. 补码

    正数的补码表示与原码相同,最高位为符号位,用0表示,其余位为真值,负数的补码最高位为1,数值部分则由它的反码再加1形成。

    [X]=0110 1001

    [Y]=1001 0111

    8位二进制数能表示的补码范围为-128+127,可以推算出16位二进制数能表示的二进制补码的范围为-32768+32767。当带符号数用补码表示时,最高位是符号位,当符号位是0时,表示正数,后7位为其真正的数;当符号位是1时,表示负数,要将后7位的最低为减1,求得反码,再按位取反,才能得到真正的数(真数)。


    任何一个数用补码表示后,都可以看成“连同符号位的数”。符号位也一起参加运算,一个数要减去另一个数时,只要加上其补码即可。

    做减法运算,求7-19=?可以用7+[-19]来完成。

    [7]= 0000 0111

    [+19]=0001 0011

    [-19]=1110 1101


    0000 0111 [7]

    + 1110 1101 [-19]

    1111 0100

    所以,和的补码=1111 0100

    和的反码=1111 0011

    和的原码=1000 1100 其真值为-12

  • 相关阅读:
    Eclipse 启动Tomcat 超时报错的解决方案
    ExtJS提交到服务器端的方式以及简单的登录实现
    19.CentOS7下PostgreSQL安装过程
    18.正向代理和反向代理
    17.NET Core WebApi跨域问题
    16.Ubuntu LTS 16.04安装搜狗输入法全过程记录(纯新手)
    15.基础知识相关好帖(持续更新)
    14.C#/.NET编程中的常见异常(持续更新)
    13.padding和margin,几种参数
    12.Visual Studio 2013中的默认快捷键
  • 原文地址:https://www.cnblogs.com/MichaelBin/p/4472565.html
Copyright © 2020-2023  润新知