想让0变为1,1变为0,不能用~(按位取反),因为是数据的二进制位取反,如
~1=11111111 11111111 11111111 11111110=-2
~0=11111111 11111111 11111111 11111111=-1
将int的二进制数输出:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 0;
char s[10];
itoa(~a, s, 2);
printf("%s\n", s);
return 0;
}
想让0变为1,1变为0,应该用^(异或)
0 ^ 1 = 1
00000000 00000000 00000000 00000000^
00000000 00000000 00000000 00000001=00000000 00000000 00000000 00000001
1 ^ 1 = 0
00000000 00000000 00000000 00000001^
00000000 00000000 00000000 00000001=00000000 00000000 00000000 00000000
a^1就是a 取反;