T-SQL n'a pas d'opérateurs de décalage de bits, vous devrez donc en implémenter un vous-même. Il y a une implémentation d'un décalage au niveau du bit ici :http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/
Vous devriez convertir votre entier en varbinary, utiliser la fonction de décalage au niveau du bit et retransformer en entier et (espérons-le) hé-presto ! Voilà votre résultat que vous attendez.
L'implémentation et les tests sont laissés en exercice au lecteur...
Edit - Pour essayer de clarifier ce que j'ai mis dans les commentaires ci-dessous, l'exécution de ce SQL démontrera les différents résultats donnés par les différents CAST :
SELECT -5381 AS Signed_Integer,
cast(-5381 AS varbinary) AS Binary_Representation_of_Signed_Integer,
cast(cast(-5381 AS bigint) AS varbinary) AS Binary_Representation_of_Signed_Big_Integer,
cast(cast(-5381 AS varbinary) AS bigint) AS Signed_Integer_Transposed_onto_Big_Integer,
cast(cast(cast(-5381 AS varbinary) AS bigint) AS varbinary) AS Binary_Representation_of_Signed_Integer_Trasposed_onto_Big_Integer
Résultats :
Signed_Integer Binary_Representation_of_Signed_Integer Binary_Representation_of_Signed_Big_Integer Signed_Integer_Transposed_onto_Big_Integer Binary_Representation_of_Signed_Integer_Trasposed_onto_Big_Integer
-------------- -------------------------------------------------------------- -------------------------------------------------------------- ------------------------------------------ ------------------------------------------------------------------
-5381 0xFFFFEAFB 0xFFFFFFFFFFFFEAFB 4294961915 0x00000000FFFFEAFB