按位与换算符:
标准解释:若参与运算的两个值的对应位都为1,则该位的结果为1,否则为0。
设a=10,b=8,那么他们的二进制表示为:
a
b
设c=a&b。
从右向左开始,可以看出二进制中,第一位都没有1,所以c的第一位为0;
第二位只有a中有1,b没有,规定比较的数都得有1才能为1,所以c的第二位还是为0;
第三位与第一位一样,所以c的第三位为0;
第四位,a为1,b也为1,根据标准解释,则c的第四位为1。
所以c的二进制表示为 1000,转换成10进制就是8。
按位或运算符:
标准解释:参与运算的两个值的对应位只要有一个为1,则该位的结果为1,否则为0。
继续设a=10,b=8,那么他们的二进制表示为:
a
b
设c=a|b。
从右向左开始,第一位都没有1,所以c的第一位为0;
第二位a中有1,b没有,所以c的第二位为1;
第三位与第一位一样,所以c的第三位为0;
第四位,a为1,b也为1,所以c的第四位为1。
所以c的二进制表示为 1010,转换成10进制就是10。
按位异或还算符:
标准解释:参与运算的两个值的对应位相异时,则该位的结果为1,否则为0。
继续设a=10,b=8,那么他们的二进制表示为:
a
b
设c=a^b。
从右向左开始,第一位都为0,没有不同,所以c的第一位为0;
第二位a中有1,b没有,所以c的第二位为1;
第三位与第一位一样,所以c的第三位为0;
第四位,a为1,b也为1,没有不同,所以c的第四位为1。
所以c的二进制表示为 0010,转换成10进制就是2。
按位取反运算符:
其实这个我是有点迷糊的,对负数的二进制不太懂,看了许多答案也没看明白。。。记了一个比较快捷的记法:
例如a=5,那么~a = -(5+1),即~a = -6。