par*_*ain 0 c++ binary twos-complement
在TC++编译器中,5的二进制表示是(00000000000000101).我知道负数存储为2的补码,因此二进制的-5是(111111111111011).最高位(符号位)为1,表示它是负数.
那么编译器如何知道它是-5?如果我们将上面给出的二进制值(111111111111011)解释为无符号数,它会变得完全不同吗?
另外,为什么1的恭维5 -6(1111111111111010)?
var*_*tec 8
编译器不知道.如果你投-5来unsigned int你会得到32763.
-5
unsigned int
32763
gre*_*ade 5
编译器知道,因为这是CPU本身使用的约定.您的计算机有一个CPU,以二进制补码表示法存储负数,因此编译器也会如此.如果你的CPU支持一个补码,编译器会使用(如与IEEE浮动的情况下,偶然).
关于该主题的维基百科文章解释了两个补码表示法的工作原理.
归档时间:
16 年,5 月 前
查看次数:
10736 次
最近记录:
13 年,4 月 前