首页 > 解决方案 > 如何将一个数字划分/编码为一组位数组,这些位数组因数/乘法/等得到原始数字

问题描述

14852543我在某处发现了数字的“十进制字节”表示226 161 191。我认为这是因为它以某种方式将或乘以这个数字,但我不确定它是如何完成的。

问题的第一部分是如何将这些字节值转换回数字。问题的第二部分是,如何将一个数字分解为一组位数组(不是字节),它们完成与上述相同的事情。因此,例如,可能是 5 个 7 位数字或 12 个 3 位数字,而不是 3 个 8 位数字。想知道什么方程或算法可以做到这一点。

标签: numbersbit-manipulation

解决方案


以 14852543 作为示例输入。

案例 1 [12 个 3 位数字]

第 0 步:设置位组。12×[000]。或 [ 000 000 000 000 000 000 000 000 000 000 000 000 ]

第一步:将 14852543 转换为二进制。应该得到 111000101010000110111111 。

第 2 步:111000101010000110111111 到 [000 000 000 000 111 000 101 010 000 110 111 111]。

第 3 步:[000 000 000 000 111 000 101 010 000 110 111 111] 到[0 0 0 0 7 0 5 2 0 6 7 7]

案例 2 [5 个 7 位数字]

第 0 步:设置位。5 x [0000000] 。或 [ 0000000 0000000 0000000 0000000 0000000 ]

第一步:将 14852543 转换为二进制。应该得到 111000101010000110111111 。

步骤 2:111000101010000110111111 到 [0000000 0000111 0001010 1000011 0111111]。

第 3 步:[0000000 0000111 0001010 1000011 0111111] 到[0 7 10 67 63]

案例 3 [ 3 个 8 位数字 ]

第 0 步:设置位。3 x [00000000] 。或 [ 00000000 00000000 00000000 ]

第一步:将 14852543 转换为二进制。应该得到 111000101010000110111111 。

第 2 步:111000101010000110111111 到 [11100010 10100001 1011111]。

第三步:[11100010 10100001 1011111]到[226 161 191]


希望它回答......(:


推荐阅读