For example, if I have 456, How can I split this and then let each column value be a separate number? The only way I can think of doing this would be to subtract '100' n times until that column is '0' and storing the number of subtractions, leaving '4' then repeating for the other columns. Is there a quicker way?
Asked
Active
Viewed 9,932 times
10
-
1Why not divide by $100?$ – saulspatz Nov 04 '18 at 14:36
-
3What you describe is pretty much the normal straightforward way one would go about this, only its description (and implementation if you are going to program it) can be abbreviated using the notions of division with and without remainder and modulo, as described in the anwers. If the number happens to be in base 2 and you are doing it on a computer then there are also even faster shift operations. – Nobody Nov 04 '18 at 20:27
2 Answers
23
You can use the operation "modulo". It calculates the remainder after you have divided by a number.
- So 456 modulo 10 is 6, now you have the first digit.
- Then you can divide 456 with 10 without remainder, you get 45.
- Now 45 modulo 10 gives 5, now you have second digit.
- Then you can divide 45 with 10 without remainder, you get 4.
- Now 4 modulo 10 gives 4, now you have last digit.
mathreadler
- 25,824
-
7Note that the 'ten' comes from decimal. This works in other number systems and you'll use the base-number of that number system instead of 'ten'. – Jochem Kuijpers Nov 05 '18 at 01:28
-
1
-
2
6
Divide $456$ with $100$ without remainder, you get $4$ - the first digit
Now $456 - 4\cdot100 = 56$ - subtract $100$ times the first digit
Now divide $56$ with $10$ without remainder to get 5 - the second digit
Now do $56 - 5\cdot10 = 6$ - last digit
You can use $\mod{}$ to get them another way, from last (or first if you call it that way) to first digit
Aleksa
- 861
-
1The "last (or first if you call it that way)" ambiguity is resolved by using "most significant" and "least significant". – Ben Voigt Nov 05 '18 at 04:52