//例如
//4&10
//10的补码为: 00000000 00001010(整形应该为4个字节,32位比特位,这里为了书写方便,省去了中间的两组0,一下的例子同理)
//4的补码为: 00000000 00000100
//那么经过按位与的操作过后结果应该为:
// 00000000 00000000(转化为10进制则为:0)//我们可以使用程序来验证结果的准确性
#include<stdio.h>
int main()
{
printf("%d",4&10);
return 0;
}//也拿4和10举例
//4的补码: 00000000 00000100
//10的补码:00000000 00001010
//按位与的操作的结果则为
// 00000000 00001110(转为为10进制则为:14)//我们同样有可以拿代码来验证
#include<stdio.h>
int main()
{
printf("%d",4|10);
return 0;
}//一样的举例4和10
//4的补码; 00000000 00000100
//10的补码:00000000 00001010
//那么经过按位异或的操作结果应该为
// 00000000 00001110(转为为10进制为:14)//我们有可以来验证一下
#include<stdio.h>
int main()
{
printf("%d",4^10);
return 0;
}//以10为例子
//10:00000000 00001010
//按位取反后的结果为 11111111 11110101(这里是很值得注意的地方)
//因为这里不像上面的其他例子,这里的最高位变成了1,这意味着这个数变成了负数
//那么我们就应该注意了,负数的原码与补码并不相同
//故而我们需要进行转化
//补码:11111111 11110101(取反,再+1得到原码,且符号位是不变的)
//原码:10000000 00001011(转化为10进制为:-11)//一样的我们可以通过代码来验证起准确性
#include<stdio.h>
int main()
{
int a =10;
printf("%d",~a);
return 0;
}