C初学者提问
#include <stdio.h>
#include <stdlib.h>
main ()
{
printf("0 | 0 is %d\n", 0 | 0);
printf("0 | 1 is %d\n", 0 | 1);
printf("1 | 1 is %d\n", 1 | 1);
printf("1 | 2 is %d\n", 1 | 2);
printf("128 | 127 is %d\n", 128 | 127);
system("pause");
}
#include <stdio.h>
#include <stdlib.h>
main ()
{
printf("0 ^ 0 is %d\n", 0 ^ 0);
printf("0 ^ 1 is %d\n", 0 ^ 1);
printf("1 ^ 1 is %d\n", 1 ^ 1);
printf("1 ^ 2 is %d\n", 1 ^ 2);
printf("15 ^ 127 is %d\n", 15 ^ 127);
system("pause");
}
这2条的作用是什么?^这个和|这个都起什么作用呢?请各位指点
[解决办法]
1 ¦ 1应该还是1吧。 写成8位2进制就明白了。
逻辑或:两个数的对应位只要有任意一位为1,结果该位就为1,否则为0。所以结果为:
0 ¦ 0 即 00000000 ¦ 00000000 = 00000000 即 0
0 ¦ 1 即 00000000 ¦ 00000001 = 00000001 即 1
1 ¦ 1 即 00000001 ¦ 00000001 = 00000001 即 1
1 ¦ 2 即 00000001 ¦ 00000010 = 00000011 即 3
128 ¦ 127 即 10000000 ¦ 01111111 = 11111111 即 255
逻辑异或:两个数的对应位只要有任意一位为1,结果该位就为0,否则为1。也就是对上面或的结果取反。
0 ^ 0 即 00000000 ^00000000 = 11111111 即 255
0 ^ 1 即 00000000 ^ 00000001 = 11111110 即 254
1 ^ 1 即 00000001 ^00000001 = 11111110 即 254
1 ^ 2 即 00000001 ^ 00000010 = 11111100 即 252
128 ^ 127 即 10000000 ^ 01111111 = 00000000 即 0
C菜鸟提问
C初学者提问#include stdio.h#include stdlib.hmain (){printf(0 | 0 is %d\n, 0 | 0)printf(0 |
