V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Hsinyao
V2EX  ›  问与答

困扰我一晚上关于补码的一个问题

  •  
  •   Hsinyao · 2019-03-03 00:13:41 +08:00 via iPad · 2161 次点击
    这是一个创建于 2118 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么-1 的补码是 1.0000 ?还有为什么说纯小数下补码能比原码多表示一个-1 ?

    7 条回复    2019-03-03 13:55:07 +08:00
    sulinehk
        1
    sulinehk  
       2019-03-03 00:16:58 +08:00 via Android
    -1 的补码在 4 位下应该是 1111
    小数或者说浮点数应该是按照 IEEF 754 标准
    111qqz
        2
    111qqz  
       2019-03-03 00:27:12 +08:00 via Android
    ???
    clker
        3
    clker  
       2019-03-03 06:50:33 +08:00 via Android
    补码只是针对整数而言。小数完全是另外一套表示法,IEEE754。
    Hsinyao
        4
    Hsinyao  
    OP
       2019-03-03 08:46:51 +08:00 via iPhone
    @sulinehk
    @clker 我指的是定点小数的补码表示法,即纯小数,小数点前面是符号位,小数点后是数字位那种。ieee754 是浮点小数的
    Hsinyao
        5
    Hsinyao  
    OP
       2019-03-03 08:48:58 +08:00 via iPhone
    @111qqz ???
    yianing
        6
    yianing  
       2019-03-03 09:43:52 +08:00
    因为原码的 x.xxxx 是表示不到-1 的,1.0000 在原码中是-0,0.0000 是+0,补码将最高位不再看作符号位,而是赋予一个负权值,1.0000=-1*2^0 + 0=-1,负 0 消失,变成-1,而在源码中+0 和-0 是被看成相等的,变成补码后自然多了一个-1。
    111qqz
        7
    111qqz  
       2019-03-03 13:55:07 +08:00
    @Hsinyao 不好意思,一开始没看懂你的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5743 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:07 · PVG 11:07 · LAX 19:07 · JFK 22:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.