This problem came up on plcs.net.

plctalk.net/qanda/showthread.php?t=38070

The times cited for reversing bits seemed a little long so I wrote an example of how to reverse bits on the RMC70/RMC150 just for comparison.

I have an updated version down below.

Thats almost to easy Peter.

I have a somewhat related question. I think you have a good way of dealing with bits and dwords. I donâ€™t see anything about working with bytes or words. Can you move 4 bits at a time from one variable to another?

```
myVar1.0..3 = myVar2.0..3
```

I know you can do it this way[code]

myVar1.0 := myVar2.0

myVar1.1 := myVar2.1

myVar1.2 := myVar2.2

myVar1.3 := myVar2.3

[/code]

Now that the RMC has user functions I am taking advantage of them.

Just copy and paste.

This function takes 7.3 microseconds to execute.

```
(*
REVERSE_BITS
*)
FUNCTION REVERSE_BITS : DWORD
VAR_INPUT
Bits_IN: DWORD;
END_VAR
VAR
Bits: DWORD;
END_VAR
Bits:=Bits_IN;
Bits:=(SHR(Bits,1 ) AND 16#55555555 ) OR SHL(Bits AND 16#5555555,1 );
Bits:=(SHR(Bits,2) AND 16#33333333) OR SHL(Bits AND 16#33333333,2);
Bits:=(SHR(Bits,4) AND 16#0F0F0F0F) OR SHL(Bits AND 16#0F0F0F0F,4);
Bits:=(SHR(Bits,8) AND 16#00FF00FF) OR SHL(Bits AND 16#00FF00FF,8);
REVERSE_BITS:=SHR(Bits,16) OR SHL(Bits,16);
END_FUNCTION
```