• 二进制的原码、反码和补码


    数在计算机中是以二进制形式表示的,分为有符号数和无符号数。

    原码、反码、补码都是有符号定点数的表示方法。

    一个有符号定点数的最高位为符号位,0是正,1是副。

    1.原码就是这个数本身的二进制形式。

    例如:0000001 就是+1 1000001 就是-1   

    2.正数的反码和补码都是和原码相同。

    负数的反码是将其原码除符号位之外的各位求反。

    [-3]反=[10000011]反=11111100  

    负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

    [-3]补=[10000011]补=11111101  

    一个数和它的补码是可逆的。

    3.设立补码的原因有两个:

    第一是为了能让计算机执行减法:[a-b]补=a补+ (-b)补

    第二个原因是为了统正0和负0正零: 00000000 负零: 10000000

    这两个数其实都是0,他们的原码却有不同的表示,但是他们的补码是样的, 都是0000000

    那么,000000这个补码表示的哪个数的补到呢?

    其实这是一个规定,这个数表示的是-128  所以n位补码能表示的范围是  -2^(n-1)到2^(n-1)-1  比n位原码能表示的数多一个.

    4.总结:

    在计算机内,定点数有3种表示法:原码、反码和补码

    所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0” 表示正,“1” 表示负,其余位表示数值的大小。

    反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

    补码表示法规定:正数的补码与其原码相同:负数的补码是在其反码的求位加1。

  • 相关阅读:
    分析问题的方法
    听听冯洛伊曼的概念机器的齿轮声
    Nginx支持WebSocket配置
    原型模式
    redis日志位置
    修改centos7远程端口和nginx安全设置
    Java输出小端二进制文件
    centos7安装Java8
    Nginx教程
    centos7.6安装postgresql10
  • 原文地址:https://www.cnblogs.com/zaixiachengxuyuan/p/11552724.html
Copyright © 2020-2023  润新知