unsigned right shift '>>>' Operator in sql server -
how write unsigned right shift operator in sql server? expression value >>> 0
here e.g. -5381>>>0 = 4294961915
t-sql has no bit-shift operators, you'd have implement 1 yourself. there's implementation of bitwise shifts here: http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/bitmask-handling-part-4-left-shift-and-right-shift.aspx
you'd have cast integer varbinary, use bitwise shift function , cast integer , (hopefully) hey-presto! there's result you're expecting.
implementation , testing left exercise reader...
edit - try clarify have put in comments below, executing sql demonstrate different results given various casts:
select -5381 signed_integer, cast(-5381 varbinary) binary_representation_of_signed_integer, cast(cast(-5381 bigint) varbinary) binary_representation_of_signed_big_integer, cast(cast(-5381 varbinary) bigint) signed_integer_transposed_onto_big_integer, cast(cast(cast(-5381 varbinary) bigint) varbinary) binary_representation_of_signed_integer_trasposed_onto_big_integer
results:
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
Comments
Post a Comment