第(2/3)页 二进制位数(十进制的19位),三进制位数(十进制的12位),十进制位数(十进制的6位) 那么,如果是一个很大的数(比如长度为1gb的二进制数据),就可以转换为499979进制。 然后统计每一位(无视位的先后和大小)中各个不超过进制的数(比如二进制就是0和1,三进制就是0和1和2,十进制就是0和1和2和3和4和5和6和7和8和9;其他进制以此类推)。 这套素数进制算法,不仅可以用于压缩和解压缩,还能用于快速校验文件是否被篡改过。 然而,随着进制越来越大,不是每一个数都出现过(比如十进制499979中,可能所有位都只出现过5000个数,那么数数就完全不对称了)(结论:进制越大,同一个数换算后的数位越短,进制越小,同一个数换算后的数位越长) =超级电脑的数据卡尺= 第一种数据卡尺:取素数次方根和有限的小数点后100位数 获得一个数,直接把该数进行取n次方根。 比如499979,取平方根的整数部分就是707,取立方根的整数部分就是79。 一般而言,为了尽可能减少计算量,一般取二次方根都保留小数点后10位数,取三次方根都保留小数点后20位数,取五次方根都保留小数点后30位数(最高取小数点后100位数)。 想象一下1zb二进制长度的数,取其499979次方根,会等于多少,会不会大于1gb? 第二种数据卡尺:取任意正整数阶乘去无限接近该数值。 一般的方法,就是a!+b!+c!……,然后a大于b大于c 第(2/3)页