Math 如何将比特流转换为base20数字?
给定的是一个位流(连续的位串太长,无法一次处理),结果应该是一个匹配的base20数字流 对于少量位,该过程很简单: 假设最高有效位正确:Math 如何将比特流转换为base20数字?,math,bit,bitstream,Math,Bit,Bitstream,给定的是一个位流(连续的位串太长,无法一次处理),结果应该是一个匹配的base20数字流 对于少量位,该过程很简单: 假设最高有效位正确: 110010011 = decimal 403 (1 * 1 + 1 * 2 + 1 * 16 + 1 * 128 + 1 * 256) 403 / 20 = 20 R 3 20 / 20 = 1 R 0 1 / 20 = 0 R 1 Result is [3, 0, 1] = 3 * 1 + 0 * 20 + 1 * 400 但是,如果位太多而无法在一步
110010011 = decimal 403 (1 * 1 + 1 * 2 + 1 * 16 + 1 * 128 + 1 * 256)
403 / 20 = 20 R 3
20 / 20 = 1 R 0
1 / 20 = 0 R 1
Result is [3, 0, 1] = 3 * 1 + 0 * 20 + 1 * 400
但是,如果位太多而无法在一步中转换为十进制数,该怎么办
我的方法是在一个循环中完成这两个过程:将位转换为十进制数,并将十进制数转换为20进制数。这个过程需要在遍历位时降低乘数(位置值),因为否则,它们将很快增加太多而无法计算。第64位将乘以2^64,以此类推。注意:我理解了一个问题,即比特流到达时长度未知,持续时间未知,应该进行从基2到基20的实时转换
我不相信这可以一蹴而就。问题是基数20和基数2没有共同点,而模运算规则不允许干净地解决问题
(a+b) mod n = ( (a mod n) + (b mod n) ) mod n
(a*b) mod n = ( (a mod n) * (b mod n) ) mod n
(a^m) mod n = ( (a mod n)^m ) mod n
现在,如果你有一个以p和q(p然后我们知道。然而,我们不知道A,因此,上面告诉我们b[0]=A模q
这意味着: 如果你想知道基数q中数字的最低位数b0,你需要知道完整的数字 只有当q=pm为 简言之,因为q=20,p=2。我必须说,不,这不可能一次完成。此外,请提醒自己,我只谈到了基q中的第一个数字,而不是第I个数字 例如,假设一个1000乘以0的比特流后跟一个1。这与数字21000相似。第一个数字很容易,但是要得到任何其他数字。。。您基本上处于一个相当困难的位置。注意:我理解一个问题,即比特流到达的长度未知,持续时间未知,应该进行从基2到基20的实时转换b[0] = A mod q = Sum[a[i] p^i, i=0->n] mod q = Sum[ (a[i] p^i) mod q, i=0->n] mod q = Sum[ ( (a[i] mod q) (p^i mod q) ) mod q, i=0->n] mod q
我不相信这可以一蹴而就。问题是基数20和基数2没有共同点,而模运算规则不允许干净地解决问题现在,如果你有一个以p和q(p(a+b) mod n = ( (a mod n) + (b mod n) ) mod n (a*b) mod n = ( (a mod n) * (b mod n) ) mod n (a^m) mod n = ( (a mod n)^m ) mod n
然后我们知道。然而,我们不知道A,因此,上面告诉我们b[0]=A模q
这意味着: 如果你想知道基数q中数字的最低位数b0,你需要知道完整的数字 只有当q=pm为 简言之,因为q=20,p=2。我必须说,不,这不可能一次完成。此外,请提醒自己,我只谈到了基q中的第一个数字,而不是第I个数字b[0] = A mod q = Sum[a[i] p^i, i=0->n] mod q = Sum[ (a[i] p^i) mod q, i=0->n] mod q = Sum[ ( (a[i] mod q) (p^i mod q) ) mod q, i=0->n] mod q
例如,假设一个1000乘以0的比特流后跟一个1。这与数字21000相似。第一个数字很容易,但是要得到任何其他数字。。。你现在的处境相当艰难。如果有人能证明这是可以做到的,请告诉我。如果有人能证明这是可以做到的,请让我知道。我希望得到一个base-20数字流,在这种情况下非常适合传输,需要在另一端转换回位流。我希望得到一个base-20数字流,在这种情况下非常适合传输,需要在另一端转换回位流。