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

Binary 如何知道它是正数/负数还是指二进制数?,binary,computer-science,Binary,Computer Science,我在一本计算机科学书中学习整数数据格式,据我所知,整数的二进制表示形式,无论是正整数还是负整数,最左边的位(msb)要么是0表示正整数,要么是1表示负整数,比如说,在一台8位计算机中,我怎么知道它是指10进制的1000010-130,还是指负数2? 如果我错了,请纠正我。看一下这个问题的答案: CPU使用一种称为操作码的东西来确定在操作内存位置时它将使用哪个函数(在本例中,值为1000010)。正是CPU中的函数将其作为负数或正数进行操作。CPU无法访问该数字是有符号的还是无符号的-在处理该数字

我在一本计算机科学书中学习整数数据格式,据我所知,整数的二进制表示形式,无论是正整数还是负整数,最左边的位(msb)要么是0表示正整数,要么是1表示负整数,比如说,在一台8位计算机中,我怎么知道它是指10进制的1000010-130,还是指负数2?
如果我错了,请纠正我。

看一下这个问题的答案:


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

查看此问题的答案:


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

如果您只是在某处看到字符串
1000010
,我不知道。。。写在墙上什么的,你怎么知道怎么解释

你可能会说,嘿,那是一千万加十(你认为它是10进制),或者你可能会说,嘿,那是-126(你认为它是2的补码二进制),或者你可能会说那是正130(你认为它是标准二进制)

从理论意义上讲,这取决于任何人如何解释它

因此,当一台计算机存储8位数据时,如何解释它就取决于它了

现在,如果你正在编程,你可以告诉计算机你想如何解释某些东西。例如,在c中++

// char is 1 byte
unsigned char x = 130u;
在这里,我告诉编译器将130无符号放入一个字节,这样计算机将存储
1000010
,并将其解释为130的值

现在考虑

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

在这里,我已经告诉编译器将-126有符号的放入一个字节,这样计算机将再次存储
1000010
,但这次它将把它解释为值-126。

如果你只是在某处看到字符串
1000010
,我不知道。。。写在墙上什么的,你怎么知道怎么解释

你可能会说,嘿,那是一千万加十(你认为它是10进制),或者你可能会说,嘿,那是-126(你认为它是2的补码二进制),或者你可能会说那是正130(你认为它是标准二进制)

从理论意义上讲,这取决于任何人如何解释它

因此,当一台计算机存储8位数据时,如何解释它就取决于它了

现在,如果你正在编程,你可以告诉计算机你想如何解释某些东西。例如,在c中++

// char is 1 byte
unsigned char x = 130u;
在这里,我告诉编译器将130无符号放入一个字节,这样计算机将存储
1000010
,并将其解释为130的值

现在考虑

// char is 1 byte
char x = -126;
在这里,我告诉编译器将-126有符号的放入一个字节,这样计算机将再次存储
1000010
,但这次它将把它解释为值-126