Oracle库中Number类型存储结构解析

        oracle数据库和其他库存储Number类型数据有比较大的区别。例如Mysql,有点类似于程序语言,会有明确的区分,如int,float等。Oracle的Number就一种存储格式,float也没有采用IEEE标准(所以也没有谁说Oracle有浮点数精度问题)。Oracle是采用了类似于按位拆分,将10进制数字拆分为两个一组,存到一个字节中,一个字节最大128嘛,存个两位数还是足够的。整数和小数分开存储,再加上一些长度位,标识位,符号位,就OK了。

        理了一个示意图,便于理解

注意: 二进制位那一行的数字仅示例表示位的下标索引,无实际意义

下面举几个例子        

正整数  如: 123

        从右向左拆分,两个一组 可拆成两组   1和23  那么存两位字节的整数,分别是 02 和24(都加1,可能是因为 不加1会出现0,0在二进制中一般表示结束符);

         标识位就是 0xC0+2(整数长度) 即0xC2 = 194

        无小数部分,正数省略符号位

        那么长度位就是 3 (标识位+整数部分)

          (注意,长度位有大小端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值