有人可以解释如何使用%10反转整数吗?

时间:2017-01-04 22:06:42

标签: java int modulus

要反转整数并将其放入列表,可以执行以下操作(其中x是某个整数):

    int lastDigit = x;
    while(lastDigit != 0)
    {
        list.add(lastDigit % 10);
        lastDigit /= 10;
    }

因此,如果x为502,则会将2 0和5添加到列表中。

这显然非常有用,但直到昨天我认为做这样的事情的唯一方法是首先将int转换为字符串。

我不确定这是否只是常识,但我今天才看到这种方法。我想了解它是如何工作的,而不仅仅是记住它。

有人可以解释为什么数字模数10给出最后一位数,为什么将它除以10得到下一次迭代的下一个数字?为什么它最终会等于0?

2 个答案:

答案 0 :(得分:0)

模数运算符为您提供除法计算的余数。

502%10是2,因为502/10 = 50加上余数2。 因此,此计算中的余数为2,表示将2添加到列表中。

下一行中除以10的除法是使用整数运算执行的,因此502/10得到50的结果。

任何小于10的非负数都会得到零结果,结束循环。

答案 1 :(得分:0)

% 10视为十进制系统中最不重要(最右边)的数字(因此10)。

然后将/ 10视为将所有数字向右移位(也是十进制)。您显然必须这样做,直到数字为0。在这种情况下,所有剩余的数字都可以理解为前导零。

在二进制系统中,您还可以使用按位运算& 1>> 1,而不是模数(% 2)和整数(/ 2)除法。

列表追加操作(此处为add)是反转订单的操作。上述操作仅用于提取单个数字。