T-SQL heeft geen bit-shift-operators, dus je zou er zelf een moeten implementeren. Er is een implementatie van bitsgewijze verschuivingen hier:http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/
Je zou je integer naar een varbinary moeten casten, de bitwise shift-functie moeten gebruiken en terug moeten casten naar integer en (hopelijk) hey-presto! Daar is je resultaat dat je verwacht.
Implementatie en testen wordt overgelaten als een oefening voor de lezer...
Bewerken - Om te proberen te verduidelijken wat ik in de onderstaande opmerkingen heb geplaatst, zal het uitvoeren van deze SQL de verschillende resultaten demonstreren die door de verschillende CAST's worden gegeven:
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
Resultaten:
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