1package utils 2 3object MathUtils { 4 def IntToOH(n: Int): BigInt = { 5 BigInt(1) << n 6 } 7 8 object BigIntGenMask { 9 // generate w/r mask 10 def apply(high: Int, low: Int): BigInt = { 11 require(high > low) 12 val maskLen = high - low + 1 13 ((BigInt(1) << maskLen) - 1) << low 14 } 15 16 def apply(pos: Int): BigInt = { 17 BigInt(1) << pos 18 } 19 } 20 21 object BigIntNot { 22 def apply(bigInt: BigInt): BigInt = { 23 var res = bigInt 24 val len = bigInt.bitLength 25 for (i <- 0 until len) { 26 res = res.flipBit(i) 27 } 28 res 29 } 30 } 31} 32