Not exactly sure what you mean, is it a bit shift in a dint or a dint value.
For a bit shift i.e. 32 steps 1,2,4,8,16,32,64,128 etc. then yes multiply by 2 but there is no easy way back makes it complicated, better to use individual bits, however, if you mean a value like 1,2,3,4,5,6,7 etc. you should not need a double as a 16 bit word will give you 32767 steps, this is a better way and suggest you step by increments of 10 so that leaves spare integers just in case you need to add extra steps.
simple to do for example:
Start = 10 do something move 20 to seq.
step 1 = 20 do something move 30 to seq.
step 2 = 30 if something move 40 to seq or if something else move 20 to seq. to check
step 3 = 40 do something move 0 to seq to stop process or move 10 to go back to start.
Use compare instruction to drive the logic
so if SEQWord = 10 do something
Also if certain logic depicts it to jump steps just move to the seq number you want, advantages are you can easily step back, add extra steps just use the numbers between the 10 increments. Another advantage of using an integer is that many HMI's have multistate functions where depending on a value in a variable they can display a message.
Example:
10 = Add Ingredient 1
20 = Add ingredient 2
30 = Mixing
40 = Discharging.
50 = Shutting down