MST

星途 面试题库

面试题:Go语言操作符相关 - 表达式求值

给定一个Go语言表达式:`3 &^ (1 << 2) + 5 / 2`,请详细说明这个表达式的运算过程,并给出最终结果,同时解释`&^`操作符的作用。
32.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. &^操作符作用
    • &^是Go语言中的按位清除运算符。a &^ b的结果是一个数字,该数字的每一位,当b的对应位为1时,结果的对应位为0;当b的对应位为0时,结果的对应位为a的对应位的值。可以理解为从a中清除掉b为1的位。
  2. 表达式运算过程
    • 按照运算符优先级,先计算(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
      • 对于00110110进行&^运算:
        • 从右到左,第一位:b0110)的第一位为0,所以结果的第一位是a0011)的第一位,即1。
        • 第二位:b的第二位为1,所以结果的第二位为0。
        • 第三位:b的第三位为1,所以结果的第三位为0。
        • 第四位:b的第四位为0,所以结果的第四位是a的第四位,即0。
      • 所以3 &^ 6的结果二进制为0001,十进制为1。
  3. 最终结果:1