【问题标题】:How to know if it is either a positive/negative number or it is referring to a number in binary?如何知道它是正数/负数还是指的是二进制数?
【发布时间】:2013-07-06 08:34:15
【问题描述】:

我在一本计算机科学书籍中学习整数数据格式,据我所知,整数的二进制表示,无论是正数还是负数,都是让最左边的位 (msb) 为 0 表示正数或 1对于负数,假设在 8 位计算机中,我怎么知道它是在谈论 10000010 - 130 以 10 为底还是指负数 2? 可能有误,请指正。

【问题讨论】:

    标签: binary computer-science


    【解决方案1】:

    如果你只是在某处看到字符串10000010,我不知道……写在墙上什么的,你怎么知道如何解释它?

    你可能会说,嘿,那是一千万和十(你认为它是以 10 为底)或者你可能会说嘿,那是 -126(你认为它是二进制补码),或者你可能会说这是正 130(你认为它是标准二进制文件)。

    从理论上讲,它取决于正在解释它如何被解释的任何东西。

    因此,当计算机保存 8 位数据时,它取决于它如何解释它。

    现在,如果您正在编程,您可以告诉计算机您希望如何解释某些内容。比如在c++中

    // char is 1 byte
    unsigned char x = 130u;
    

    这里我已经告诉编译器将 130 unsigned 放入一个字节中,因此计算机将存储 10000010 并将其解释为值 130

    现在考虑

    // char is 1 byte
    char x = -126;
    

    这里我告诉编译器将 -126 signed 放入一个字节,因此计算机将再次存储 10000010 但这次它会将其解释为值 -126。

    【讨论】:

      【解决方案2】:

      看看这个问题的答案:Negative numbers are stored as 2's complement in memory, how does the CPU know if it's negative or positive?

      CPU 使用称为操作码的东西来确定在操作内存位置(在本例中为值 10000010)时将使用哪个函数。正是 CPU 中的函数将其作为负数或正数进行操作。 CPU 无法访问该数字是有符号还是无符号 - 它在操作该数字时使用操作码来确定它应该是有符号还是无符号操作。

      【讨论】:

        猜你喜欢
        • 2014-03-28
        • 2021-05-16
        • 2011-12-09
        • 2011-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        相关资源
        最近更新 更多