原码、补码、反码参考:
http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
进制转换参考:
http://www.cnblogs.com/xugang/archive/2012/10/22/2733593.html
负数转换为16进制
http://blog.csdn.net/xiaochunyong/article/details/7616625
--16进制数"0x7FFFFFFFFFFFFFFF "转化为进制
select CONVERT(bigint,cast(0x7FFFFFFFFFFFFFFF as varbinary)) as converted
经验证:可以直接给bigint赋值16进制格式 输出时直接输出为转换后的10进制格式,如下所示
declare @temp bigint=0x80753903004B1200
select @temp
Bigint取值范围
bigint-2^63 (-9,223,372,036,854,775,808) 至 2^63-1 (9,223,372,036,854,775,807). 存储大小为8个字节.
假设16进制字符长度为16 如下所示16进制字符串范围
FFFFFFFFFFFFFFFF-0
7FFFFFFFFFFFFFFF:十进制为9 223 372 036 854 775 807(2^63-1)
大于该值的16进制全部为负数
8000000000000000:转为bigint后值为 -9223372036854775808(-2^63 )
负数转换规律:超过最大值的取补码加负号 并且-1
如
8000000000000001 补码为0x7FFFFFFFFFFFFFFE
7FFFFFFFFFFFFFFE 取负-1就可以得到转换后的负数值。