已知修改异常变量会修改历史记录,了解历史记录格式和变量存储格式就显得尤为重要。
数字格式
贴吧上有帖子解释了这个问题,在这里我进行部分汇总。
帖子1,有个链接指向b站专栏https://tieba.baidu.com/p/9080305789b站专栏,帖子1的链接指向的
https://www.bilibili.com/read/cv26270635/帖子2
https://tieba.baidu.com/p/2793407170一个数值存储为十个字节,类似于BCD码地存储。
以下“一位”指的是半个字节,有时指十六进制有时又指十进制。
最先位存储这个数值的类型,称为标志位。下文区域二指的是这紧接着的15位,区域三是再紧接着的2位,区域四是紧接着的最后2位。对于正常的变量,区域四的高位一定为0。
小数/浮点数格式(标志位为0)
计算范围:
至
或者0
内部计算所使用的位数:15位
——说明书第62页
如果存储0,那么这20位均为0。下文讨论非零的情况。
(*反码:一个非负数的反码是它本身。在这里,一个负数的反码是它与100的和。)
此时,区域二存储15位有效数字/真数,区域三存储指数的反码*。区域四存储这两者的符号:
- 00:指数为负,真数为正
- 01:均为正
- 05:均为负
- 06:指数为正,真数为负
举例:0 123 0000000000 00 99 00表示+1.23*10^(99-100)=0.123=123/1000
π格式(存储为上文小数格式)
当设置菜单上的输入/输出选择为数学输入/数学输出时,π格式可以显示的计算结果范围是
。不过,请注意,内部计算错误可能造成无法以π格式显示某些计算结果,还可能造成本来应该以小数格式显示的计算结果却以π格式显示。
——说明书第64页
举例:0 314159265358980 00 01表示+3.1415926535898*10^0=π
度分秒格式(标志位为4)
除了标志位以外,剩余19位和小数一样,存储度数。
举例:4 1033397 22222222 00 01表示1.03339722222222°=1°2′0.23″
分数格式(标志位为2)
如果构成带分数表达式的总位数(整数位数+分子位数+分母位数+分隔符号)大于10,则计算结果将显示为小数值。
——说明书第18页
(*带分数表达式: 对于真分数,分子+分隔符+分母;对于带分数,整数+分隔符+真分数)
区域二存储带分数表达式*(其中分隔符为A),区域三存储区域二内容的长度,区域四存储分数的符号:01为正,06为负。
举例:2 1A1A 123456 00000 10 01表示
根式格式(标志位为8)
格式的计算结果采用以下其中一种格式。
——说明书第9页
所存储的数为,其中a、d、c、f按2位存储,b、e按3位存储。
区域二按顺序存储b、a、c、一位0、e、d、f。
区域三与区域四部分别表示两个根式的符号,1为正,6为负(取相反数)。
举例:8 002 10 01 0 003 45 01 01 01表示
ERROR格式(标志位为F)
正常不会出现,我不懂。
指针格式(标志位为6)
正常不会出现,我不懂。