T-SQL tidak memiliki operator bit-shift, jadi Anda harus mengimplementasikannya sendiri. Ada implementasi pergeseran bitwise di sini:http ://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/
Anda harus melemparkan integer Anda ke varbinary, menggunakan fungsi shift bitwise dan melemparkan kembali ke integer dan (semoga) hei-presto! Ada hasil yang Anda harapkan.
Implementasi dan pengujian diserahkan sebagai latihan untuk pembaca...
Sunting - Untuk mencoba mengklarifikasi apa yang saya masukkan dalam komentar di bawah, menjalankan SQL ini akan menunjukkan hasil berbeda yang diberikan oleh berbagai 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
Hasil:
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