Der zweite Operand ist ein Byte, welches zusätzlich maskiert ist.
1.Operand | 2.Operand signifikante Bits | entspricht |
Byte | 3 | a shl (b mod 8) |
Word | 4 | a shl (b mod 16) |
Longword | 5 | a shl (b mod 32) |
Int64 | 6 | a shl (b mod 64) |
Byte(-1) -> 255
(255 mod 32) -> 31
(Longword(a) shr -1) -> (a shr 15)
Das funktioniert also nicht, abgesehen davon müsste die Maske für B $2 sein.