如何知道它是正数还是负数还是指二进制数?

时间:2013-07-08 21:32:26

标签: binary computer-science

我正在学习计算机科学书中的整数数据格式,据我所知,整数的二进制表示是正还是负是最左边的位(msb)是0为正数还是1对于否定,让我们说在8位计算机中我怎么知道它是在谈论基数10中的10000010-130还是指的是负2? 我可能错了,如果我请你纠正我。

2 个答案:

答案 0 :(得分:3)

如果你只是在某个地方看到字符串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 签名放入一个字节,因此计算机将再次存储10000010,但这次它会将其解释为值-126。 / p>

答案 1 :(得分: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无法访问该号码是有符号还是无符号 - 它在操作该号码时使用操作码来确定它是否应该是有符号或无符号操作。