anchor.diff:  bs_reverse(<<I:1,B/bits>> ) -> << ( bs_reverse(B))/bits,I:1 >>;
   bs_reverse(<<>>) -> <<>>.
   
  -%TODO :improve performance and code design... same with bitwise comprehension if possible ?
  +%TODO :improve performance and code design... same with bitwise comprehension if possible ? or more arithmetic ?
   % unary bitwise not
   bs_not(<<I:1/bits,B/bits>>) when I == <<0:1>> -> <<1:1,(bs_not(B))/bits >>;
   bs_not(<<I:1/bits,B/bits>>) when I == <<1:1>> -> <<0:1,(bs_not(B))/bits >>;
  
positive.code: 	random:seed(now()),
  	%generate random int
  	Num=random:uniform((1 bsl 8) -1), % to get maximum integer for equivalent conversion to bits
  	ok = bs_oper_meaning_test(Num,<<Num:8>>),
  	ok = bs_oper_bigbits_test(bs_random(128)),
  	ok = bs_autotest(Nb-1).
  
  %generate random Bitstring
  bs_random(Size) when Size > 8 -> << (random:uniform(255)):8 , (bs_random(Size-8))/bits >>;
  bs_random(Size) when Size =< 8 -> << (random:uniform(255)):Size >>.
  
  
  bs_oper_meaning_test(Num,Bin) ->
  	io:fwrite("Value : ~w -> ~w~n",[Num,Bin]),
  	io:fwrite("| ~8s          ||  ~8s  || ~10s |~n",["Operator","Integer","BitString"]),
  	%% equality test
  
negative.code: % arithmetic bitwise xor
  bs_xor(<<B/bits>>,<<C/bits>>) when bit_size(B) /= bit_size(C) -> bs_padding(bs_xor, <<B/bits>>,<<C/bits>>);
  bs_xor(<<I:1/bits,B/bits>>,<<J:1/bits,C/bits>>) when I == <<0:1>> -> << J:1/bits , (bs_xor(B,C))/bits >>;
  bs_xor(<<I:1/bits,B/bits>>,<<J:1/bits,C/bits>>) when I == <<1:1>> -> << (bs_not(J)):1/bits , (bs_xor(B,C))/bits >>;
  bs_xor(<<>>,<<>>) -> <<>>.
  
  % arithmetic bitshift left
  