给char赋值一个0xA5即165,那么编译器输出的结果该是多少呢?
答案是-91,为什么是这个结果呢?
在编译器当中165这个正数首先会转化成补码存储到内存当中,正数的补码还是其本身:
[1010 0101]2
然而将这个数提取出来的时候,编译器发现寄存器当中的这个补码最高位是个1,所以编译器会以为这个补码是个负数,所以会将其取反加一取出,变成
[1101 1011]2
取出的结果就是-91了。