擅长:python、mysql、java
<p>在Borland-BDE(.DB)表中,在数字(N)类型列中,值[63,180,255,255,255,255,255](0x 3FB4 FFFF FFFF FFFF)确实等于-54.00。任何其他解释都是不正确的。在</p>
<p>BDE将其数字(N)类型编码为64位浮点值,具有符号位、11位指数和53位小数。(我知道,总共有65位。指数被编码为超过1024的整数,因此指数0被编码为0x400。分数被规范化为没有前导零,根据需要调整指数。分数的高阶位不被存储,因为它总是1。这将部分存储需求减少到52位。在</p>
<p>对于正值,符号位设置为1。对于负值,形成绝对值,符号位设置为1,并对整个64位进行补位。在</p>
<p>零被编码为[128,0,0,0,0,0,0](0x 8000 0000 0000 0000)。在</p>
<p>这种编码将浮点值的整个范围单调地映射到无符号64位整数上,允许非常快速地比较和排序数字类型的值,而无需对它们进行解释或解码。(BDE通常对负值使用零符号位,对正值使用一个零符号位,因此它可以通过简单地连接字段值并随后忽略字段边界来形成复合索引。)</p>