n = 2 10^6;
    a = RandomReal[{0, 1}, {n}];
    k = UnitStep[# - n/4 - 1]~BitAnd~UnitStep[3 n/4 - #] &@Range[n];

    k2 = With[{n = n}, Compile[x, n/4 + 1 <= x <= 3 n/4 // Not // Boole,
         RuntimeAttributes -> Listable]]@Range[n];
    
    r1 = (2 a + 3) BitXor[k, 1] // Hash // AbsoluteTiming
    r2 = (2 a + 3) k2 // Hash // AbsoluteTiming

>{0.232013, 1123183045}

>{0.189011, 1123183045}

    n = 100;
    b = RandomReal[{0, 1}, {n, n, n}];
    
    Table[If[i^2 + j^2 + k^2 <= n^2, 0., 2 b[[i, j, k]] + 3],
      {i, n}, {j, n}, {k, n}] // Hash // AbsoluteTiming

    cf =With[{n = n, i = A[[1]], j = A[[2]], k = A[[3]]},
        Compile[{{A, _Real, 1}},
         i^2 + j^2 + k^2 <= n^2 // Not // Boole,
         RuntimeAttributes -> Listable
         ]] // Quiet;
    
      (
      k = cf@Outer[List, #, #, #] &@Range[n];
      (2 b + 3) k // Hash
      ) // AbsoluteTiming

      (
      k2 = With[{n = n},Table[UnitStep[n^2 - (i^2 + j^2 + k^2)], {i, n}, {j, n}, {k, n}]];
      (2 b + 3) BitXor[k2, 1] // Hash
      ) // AbsoluteTiming

    (
      k3 = With[{n = n, k = Range@n},
        Table[UnitStep[n^2 - (i^2 + j^2 + k^2)], {i, n}, {j, n}]];
      (2 b + 3) BitXor[k3, 1] // Hash
      ) // AbsoluteTiming

>{6.528373, 92915038}

>{0.344020, 92915038}

>{0.282016, 92915038}

>{0.169010, 92915038}