arithmetic shift combinatorics computer science cryptography logical shift mantissa mathematics permutation shift operator tuple