### Swap bits of 64-bit unsigned integer

12 August 2015

In order to swap two bits at given position (i,j) we have to perform two operations:

- Compare two bits at indicies (i,j) if they differ
- Toggle values at indicies (i,j) if bits differ.

The above algorithm is of O(1) complexity.

The following function will do the work:

func swapbits(n uint64, i uint, j uint) uint64 { if n>>i&1 != n>>j&1 { n ^= (1 << i) | (1 << j) } return n }

Find code samples here github.com/CodingBerg/golang-interview.