C语言中关于位运算的问题。

来源:百度知道 编辑:UC知道 时间:2024/05/21 18:54:52
#include "stdio.h"
main()
{
int x,y;
x=10;
y=~x;
printf("%d",y);
}
在这段代码中将10进行按位求反后,不是应该得到5吗?为什么我运行得到的是-11呢?

因为
1.int 是有符号的
2.vc里面int好像是4个字节?
那么10就应该是00000000000000000000000000001010(一共32位)
所以取反之后是负的,那是用补码表示的了
devcpp里int是2个字节10是0000000000001010
取反之后也是-11