ID:195062
 
/*
Title: Bit Swapping
Contributed by: Khalamari

data is your number you want to use it on
bit a is the starting bit range
bit b is the ending bit range
swaprange is how many bits to be swapped
so if swaprange = 3 bita to bita+3 will be swapped with bitb to bitb+3
*/

proc
bitswap(data, bita, bitb, swaprange)
var/x = ((data >> bita) ^ (data >> bitb)) & ((1 << swaprange) - 1)
return data ^ ((x << bita) | (x << bitb))
client/verb/swap_dem_bits(n as num)
src << bitswap(n,1,2,1)