<Example Program>
Program mvbits_example
Implicit None
Integer,Parameter :: i8 = Selected_Int_Kind(2)
Integer(i8) :: from = Int(b'10101010',i8)
Integer(i8) :: initial_to = Int(b'11110000',i8), to
Integer :: frompos = 5, len = 3
Integer i
Do i=0, Bit_Size(to) - len
to = initial_to
Call mvbits (from, frompos, len, to, i)
Print 1, frompos, frompos + len - 1, from, i, initial_to, to
1 Format(1X, 'Moving bits ', I0, ':', I0, ' from ', B8.8, ' to position ', &
I0, ' in ', B8.8, ' makes ', B8.8)
End Do
End Program
|
|
Execution Results
Moving bits 5:7 from 10101010 to position 0 in 11110000 makes 11110101 Moving bits 5:7 from 10101010 to position 1 in 11110000 makes 11111010 Moving bits 5:7 from 10101010 to position 2 in 11110000 makes 11110100 Moving bits 5:7 from 10101010 to position 3 in 11110000 makes 11101000 Moving bits 5:7 from 10101010 to position 4 in 11110000 makes 11010000 Moving bits 5:7 from 10101010 to position 5 in 11110000 makes 10110000 |
|