2017-01-04 5 views
-3

(xはいくつかの整数)の整数を逆にして、リストに入れて、1は、次の操作を行いますするには:xが502だった場合誰かが%10を使って整数を反転させる方法を説明できますか?

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

Soは、2 0と5がリストに追加さになるだろう。

これは明らかに本当に便利ですが、昨日まで私はこのようなことをする唯一の方法はintを文字列に変換することだと考えました。

これは単なる一般的な知識であるかどうかはわかりませんが、今日までこの方法は見ていませんでした。私は単にそれを覚えるのではなく、どのように動作するのか理解したいと思います。

数字モジュラス10が最後の数字を与える理由を説明する人がいますか?それを10で割ると次の数字が返されるのはなぜですか?なぜそれは最終的に0に等しいでしょうか?

+1

いくつかの番号を手入力します。それは非常に有益なはずです! –

+2

これは単なる算術演算です。モジュラス演算子は、除算計算で得られる余りを与えます。したがって、502/10 = 50と2の剰余を足したため、502%10は2です。次の行の10による除算は、/10は50の結果を返します。また、10より小さい負でない数値はゼロの結果を返し、ループを終了します –

+0

'mod'関数とその使用法についてお読みください。 '10 'で数値の' mod'を取ると、単位桁が剰余として返されます。ここでは、基本的に 'mod'を使って単位桁を切り捨て、' 10'で除算します。 – user2004685

答えて

0

モジュラス演算子は、除算計算の残りの部分を提供します。

502/10 = 50に2の剰余を足したので、502%10は2です。 したがって、この計算の残りは2であり、2がリストに追加されることを意味します。

ループを終了、ゼロの結果を与える50

任意の非負数10未満の結果を与える10分の502、整数演算を使用して実行される次のラインで10による除算、そう。

0

% 10は、10進法で最下位(右端)の数字を取得すると考えられます(したがって10)。

そして、/ 10は、すべての数字を1桁右(小数点も)シフトしていると考えてください。あなたは明らかに数字が0になるまでそれをしなければなりません。この場合、残りの数字はすべて先行ゼロとして認識できます。

バイナリシステムでは、さらに、モジュロ(% 2)および整数(/ 2)部門の代わりにビット演算& 1>> 1を使用することができます。

リストの追加操作(ここではadd)は、順序を逆にする操作です。上記の操作は単一桁の抽出にすぎません。

関連する問題