vardecimal 存储格式

   SQL Server的decimal和numeric数据类型 有一种新的压缩存储格式 vardecimal。放在可变长存储区域中。
    vardecimal存储格式由三个部分 

        sign (1 bit), exponent (7 bits), and mantissa (1–19 bytes).

        符号位(1位),指数(7位)和 尾数(1-19位)

    值的计算方法是 

                                (sign) mantissa * 10exponent

                                ( 符号 )尾数 * 10 的指数次幂


    也就是说第一字节是标记,后面的就是数字了。
     Sign bit:    1代表是正数,0代表是负数
     Exponent:范围是从- 38到37. 最高位是1其他六位为0代表0,也就是二进制1000000十进制64.
                            65是1 63是-1 66是2 62是-2

     Mantissa:  尾数存储的是原本数字的整数值,小数点默认在数的最高位后面。  尾数是10位为一块(一个字节是8位),一块代表3个数字,一个decimal类型数字有多块组成。
                        如果不够10位用0补齐。
比如 1存储的时候是0XC019
    C0的二进制是11000000,最高位1代表这是个正数,后7为是64代表指数为0.
    19 的二进制是00011001,补两位才够十位 ,补位后是 1100100,十进制是100,由于小数点默认在第高位后面,所以这个值是1.00,通过值的计算方法  尾数 * 10 的指数次幂。得1.
http://msdn.microsoft.com/en-us/library/bb508963.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值