想知道为什么b的结果是-1,不依靠电脑,该如何在纸上推算出来呢
(在下C语言入门,还请多多指教)
#include
int main(void){
int a,b;
a = 0b01111111111111111111111111111111;
b = 0b11111111111111111111111111111111;
printf("%d %d\n",a,b);
return 0;
}
这是我自己写的文章,认真看一遍!你就会了,实在不会私信我!:
因为b全是1是个补码,那么它本身的绝对值就是将所有位取反后加1,取反就全是0,加1后就是1,然后本身b是负数,所以b实际值就是-1