在(00000000000000101).编译器中,5的二进制表示形式为5我知道负数是以2的补码形式存储的,因此二进制的-5是。最重要的位(符号位)是1,这说明它是一个负数。
那么编译器如何知道它是-5呢?如果我们将(111111111111011)上面给出的二进制值解释为一个无符号数字,结果会完全不同吗?
此外,为什么5 -6 (1111111111111010)中的1是恭维词?
发布于 2009-03-17 17:35:37
如果数字被声明为有符号数据类型(而不是类型强制转换为无符号类型),那么编译器将知道,当符号位为1时,它是一个负数。至于为什么使用2的补语而不是1的补语,你不希望有-0的值,1的补语允许你这么做,所以他们发明了2的补语来解决这个问题。
https://stackoverflow.com/questions/655257
复制相似问题