面试题答案
一键面试&^
操作符作用:&^
是Go语言中的按位清除运算符。a &^ b
的结果是一个数字,该数字的每一位,当b
的对应位为1时,结果的对应位为0;当b
的对应位为0时,结果的对应位为a
的对应位的值。可以理解为从a
中清除掉b
为1的位。
- 表达式运算过程:
- 按照运算符优先级,先计算
(1 << 2)
,<<
是左移运算符,1 << 2
表示将1的二进制表示左移2位。1的二进制是0001
,左移2位后变为0100
,即十进制的4。 - 接着计算
5 / 2
,结果为2(因为这是整数除法,会舍去小数部分)。 - 然后计算
(1 << 2) + 5 / 2
,即4 + 2
,结果为6。6的二进制表示为0110
。 - 最后计算
3 &^ (1 << 2) + 5 / 2
,也就是3 &^ 6
。3的二进制表示为0011
。- 对于
0011
和0110
进行&^
运算:- 从右到左,第一位:
b
(0110
)的第一位为0,所以结果的第一位是a
(0011
)的第一位,即1。 - 第二位:
b
的第二位为1,所以结果的第二位为0。 - 第三位:
b
的第三位为1,所以结果的第三位为0。 - 第四位:
b
的第四位为0,所以结果的第四位是a
的第四位,即0。
- 从右到左,第一位:
- 所以
3 &^ 6
的结果二进制为0001
,十进制为1。
- 对于
- 按照运算符优先级,先计算
- 最终结果:1