A simple bitarray library for nim.
git clone https://github.com/YesDrX/bitarray.git
cd bitarray
nimble install
or
nimble install nimbitarray
import bitarray
when isMainModule:
var
a = newBitsArray(70)
b = newBitsArray(70)
echo " a = ",a
echo " b = ",b
echo "set bits ..."
a.setBits(0,1,2,3,4,69)
b.setBits(6,7,8,9,65)
echo " a = ",a
echo " b = ",b
echo "a & b = ", a & b
echo "a | b = ", a | b
echo "a ^ b = ", a ^ b
echo " ~a = ", ~a
echo "a.shl(1) =",a.shl(1)
echo "a.shl(2) =",a.shl(2)
echo "a.shl(3) =",a.shl(3)
echo "a.shl(69)=",a.shl(69)
echo "a.shr(1) =",a.shr(1)
echo "a.shr(2) =",a.shr(2)
echo "a.shr(3) =",a.shr(3)
echo "a.shr(69)=",a.shr(69)
echo "basic types"
echo (-7).toBitsArray
echo (7).toBitsArray
echo (-1.555).toBitsArray
echo (1.555).toBitsArray
echo (-7.int16).toBitsArray
echo (7.int16).toBitsArray
a = 0000000000000000000000000000000000000000000000000000000000000000000000
b = 0000000000000000000000000000000000000000000000000000000000000000000000
set bits ...
set [0,1,2,3,4,69]-th bit of a
a = 1111100000000000000000000000000000000000000000000000000000000000000001
set [6,7,8,9,65]-th bit of a
b = 0000001111000000000000000000000000000000000000000000000000000000010000
a & b = 0000000000000000000000000000000000000000000000000000000000000000000000
a | b = 1111101111000000000000000000000000000000000000000000000000000000010001
a ^ b = 1111101111000000000000000000000000000000000000000000000000000000010001
~a = 0000011111111111111111111111111111111111111111111111111111111111111110
a.shl(1) =1111000000000000000000000000000000000000000000000000000000000000000010
a.shl(2) =1110000000000000000000000000000000000000000000000000000000000000000100
a.shl(3) =1100000000000000000000000000000000000000000000000000000000000000001000
a.shl(69)=1000000000000000000000000000000000000000000000000000000000000000000000
a.shr(1) =0111110000000000000000000000000000000000000000000000000000000000000000
a.shr(2) =0011111000000000000000000000000000000000000000000000000000000000000000
a.shr(3) =0001111100000000000000000000000000000000000000000000000000000000000000
a.shr(69)=0000000000000000000000000000000000000000000000000000000000000000000001
expand a to 100 bits: 1111100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000
127.uint32.toBitsArray = 11111110000000000000000000000000
127.uint32.toBitsArray.reverseBits = 00000000000000000000000001111111
127.uint32.toBitsArray.reverseBits.reverseBits = 11111110000000000000000000000000
(uint32.high-3).toBitsArray = 00111111111111111111111111111111
(uint32.high-3).toBitsArray.reverseBits = 11111111111111111111111111111100