python bitwise operators
<int> = <int> & <int> # And (0b1100 & 0b1010 == 0b1000). <int> = <int> | <int> # Or (0b1100 | 0b1010 == 0b1110). <int> = <int> ^ <int> # Xor (0b1100 ^ 0b1010 == 0b0110). <int> = <int> << n_bits # Left shift (>> for right). <int> = ~<int> # Not (also: -<int> - 1).
bitwise operators python
bitwise operators python
Source: edube.org
bitwise operation in python
""" BITWISE OPERATION FILE: MAINTAINING CRUD BITWISE OPERAITON; """ def getBit(number, shift): """ GET_BIT: RETURN PARTICULAR BIT OF NUMBER PLACED AT 'i' POSITION; """ if number and shift >= 0: mask = number >> shift return (mask & 1) else: return None def setBit(number, position): """ SET_BIT: RETURN PARTICULAR BIT OF NUMBER PLACED AT 'i' POSITION; """ if number and (position >= 0): mask = 1 << position return (mask | number) else: return None def clearBit(number, position): """ CLEAR_BIT: CLEAR PARTICULAR BIT OF NUMBER PLACED AT 'i' POSITION; """ if number and (position >= 0): mask = ~(1 << position) return mask & number else: return None def updateBit(number, position, value): """ UPDATE_BIT: UPDATE PARTICULAR BIT OF NUMBER PLACED AT 'i' POSITION; """ if (number and (position >= 0) and (value == 0 or 1)): ## Mask that ha set bit at particular place; mask = ~(1 << position) return (number & mask | value << position) else: return None def clearBitTillPosition(number, position): """ CLEAR_BIT_TILL_POSITION: DELETE ALL BIT TILL POSITION 'K'; """ if (number and (position >= 0)): mask = -1 << position return mask & number else: return None def removeBitRange(number, start, end): """ REMOVE_BIT_RANGE: DELETE ALL BIT FROM INDEX START TO END; """ if (number and start >= 0 and end >= 0): leftMask = ~0 << end + 1 rightMask = (1 << start) - 1 mask = leftMask | rightMask return mask & number else: return None ## COUNT THE SET BIT IN NUMBER HACK; def countBitHack(number): if number != None: count = 0 while (number > 0): number = (number & number - 1) count += 1 return count else: return None ## COUNT THE SET BIT IN NUMBER; def countBit(number): if number != None: count = 0 while (number > 0): count += number & 1 number = number >> 1 return count else: return None ## POWER OF 2 def powerOfTwo(number): if number == 0: return 0 elif number > 0: if (number & number - 1) == 0: return True return False else: return False ## FAST EXPONENTIAL OF NUMBER; def fastExpo(num, pow): if (num and pow): result = 1 # result = 1 while (pow > 0): lastBit = (pow & 1) # bit = 11001 if lastBit: result = result * num num = num * num pow = (pow >> 1) return result else: return None ## CONVERT INTEGER TO BINARY; def convertIntToBin(number): base = 10 pow = 1 result = 0 while (number > 0): lastBit = number & 1 ## Taking Out Last Bit; result += lastBit * pow pow = pow * base number = number >> 1 ## Removing Bits From Left; print(result) ## CHECK EVEN OR ODD IN NUMBER; def evenOrOdd(number=None) -> bool: dataType = type(number) if dataType == list: for num in number: if (num & 1): print(f"Num {num} is Odd") else: print(f"Num {num} is Even") elif dataType == int: if (number & 1): print(f"Num {number} is Odd") else: print(f"Num {number} is Even") else: return False return True ## FLIP ALL SET TO UNSET BIT; def flipAllBits(num): return (~num)^num ## FLIP 32BIT INTEGER; def flip32BitInterger(num): return (2**32-1)^num