一个小程序 关于位运算的,来为前辈帮我看看
#include <stdio.h>
void main(){
int a;
a=~2;
printf("%d",a);}
结果a=-3;
我是在VC++6.0 上运行的
0010 取反后是1101 这怎么也不会是-3啊。 求解
[解决办法]
2的二进制为:
00000010 一个字节
取反为:
11111101
是一个负数,是有符号的数,负数在计算机里要用其补码来表示:补码=符号位以后按位取反再加1
10000010+1=10000011=-3