原碼、補碼、反碼參考:
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就可以得到轉換后的負數值。