如何用x位表示数n(假设基数为10)?

时间:2011-02-01 10:42:51

标签: algorithm math

我需要使用仅n位来表示数字x。通常,我可以选择合适的基数,并找到所需的位数。但在这里,我的约束是我只有'x'位可用。但是,我可以有更多的1组'x'位。

我试图了解如何在任何给定的系统中表示数字,就像这个。

1 个答案:

答案 0 :(得分:1)

不确定我是否正确理解了您的问题,但假设您有一个可以用m(例如20)位表示的自然数x,但您只能使用n位数组(例如,字节,即8位数组),你需要的数组量只需m / n四舍五入到下一个自然数。对于具有20位二进制格式的数字,这将是3个字节。

E.g。如果你的号码是

1001 01101100 10110100,

您可以将其存储为

00001001

01101100

10110100.

你做的是

  1. (整数 - )将您的数字除以100000000(10 ^ 1000,或十进制系统中的2 ^ 8),记下余数,截断结果

  2. (整数 - )将1.的结果除以100000000,记下余数,截断结果

  3. (整数 - )将2.的结果除以100000000,记下余数,截断结果

  4. 没有什么有趣的了,因为3的结果是0。

  5. 假设我们在这里谈论自然数,在十进制系统中,上面看起来像这样:

    1. 617652/256 = 2412 remainder 180 (10110100 in binary system)
    
    2.   2412/256 =    9 remainder 108 (01101100 in binary system)
    
    3.      9/256 =    0 remainder   9 (00001101 in binary system)
    

    所以你正在做的是

    while (number > 0) {
        divide number by 2^n
        remember remainder
        truncate number
    }
    

    恢复原始号码作为练习:)

    这实际上是一个问题,无论何时你想在计算机上处​​理非常大的整数。我想开始寻找更多信息的好地方可能是http://en.wikipedia.org/wiki/Positional_notation