Why Does 5^2 Equal 7 in Go?

in go, `5^2` equals 7 because the `^` symbol does **not** mean “to the power of”; instead, it’s the **bitwise xor operator**, which performs exclusive or on corresponding bits of two integers.

To understand why 5 ^ 2 == 7, let’s break it down step by step:

  • Decimal 5 in binary is 101
  • Decimal 2 in binary is 010
  • Aligning bits and applying XOR (1 if bits differ, 0 if same):
   101  (5)
^  010  (2)
-------
   111  (7)

So 101 XOR 010 = 111₂ = 7₁₀.

⚠️ Important notes:

  • Go has no built-in exponentiation operator. To compute powers like 5², use math.Pow(5, 2) (which returns float64) or implement

    integer exponentiation manually.
  • The ^ operator is also used for bitwise complement when unary (e.g., ^x flips all bits of x), but as a binary operator, it’s always XOR.
  • Confusion often arises from languages like Python (**) or MATLAB (^) where ^ does mean exponentiation—but not in Go.

✅ Correct ways to compute 5² in Go:

import "math"

// For float64 result
result := math.Pow(5, 2) // 25.0

// For integer exponentiation (safe for small, non-negative exponents)
func powInt(base, exp int) int {
    result := 1
    for i := 0; i < exp; i++ {
        result *= base
    }
    return result
}
fmt.Println(powInt(5, 2)) // 25

Always double-check operator semantics—especially with symbols like ^, &, and |—as their meanings are bitwise in Go, not arithmetic or logical in the conventional sense.