**About digital multiplication (and binary numbers for that matter...)**

10 times an integer number adds a zero to the end: 10 * 134 = 1340. The original digits gets moved one "step" to the left. Similarly when we multiply a decimal number (say 3.14) by ten, the decimal point gets moved one "step" to the right (31.4) indicating the movement to the right in relation to the decimal point. Of course if a number is divided by 10, the movement happens to the opposite direction: 31.4 / 10 = 3.14 and 4000 / 10 = 400.

Multiplying by 100 means multiplying by 10 twice. So there are two "steps": 100 * 3.1415 = 10 * (10 * 3.1415) = 10 * 31.415 = 314.15.

Multiplying by a million (one and 6 zeros) means 6 steps etc.

This works, because we operated with 10-based number system. We have 10 digits from 0 to 9 to represent numbers. However, computers do not use 10-based numbers. They are based on "on/off" logic. Computers understand only two digits (bits): __0__ (off) and __1__ (on). For computers the number 0 is __0__ and number 1 is __1__, but they can't have 2! They have to "write" that number using zeros and ones. Because they operate in 2-based (binary) number system, moving the digits one "step" left means multiplying by 2. So, __10__ means number 2. Binary number __100__ means number 4, because number __1__ has been multiplied by 2 twice. Binary number __111__ means number 7, because it is 4+2+1 = 7.

So, multiplying by 2 is easy in digital systems: the zeros and ones are simply moved one step left! Multiplying by 32 is just as easy: Five steps instead of one, because 32 = 2*2*2*2*2. Multiplying a signal by 2 means +6.020599913... dB which is very near 6 dB.

If we divide by 2, the zeros and ones get moved to right, but the least significant bit at the right end can't move further right. What happens to it? It drops out. If it was __0__, the number was "even" and dividing by two is easy. If it was __1__, the number was "odd" and the result of dividing by 2 must by rounded up or down: __111__ (7) divided by 2 is __11__ (3) or __100__ (4). This rounding error means *distortion*. If we apply ditter to the number to be divided by 2, the rounding errors get randomized so that they do not correlate with the signal: It becomes noise and the signal itself remains undistorted. Adding dither only if the number to be divided by 2 is odd means we statistically half the dither noise power (-3 dB), but we also add a mechanism for the dither to potentially correlate with the signal if the samples of the signal aren't statistically random in their evenness or oddness,. Pretty much all music should be random in this sense. If the signal is to be divided by 4 (-12 dB), statistically 75 % of the samples "need" dither so that the dither noise is 1.25 dB weaker than "full dither".

We see, that in digital systems with finite word length we can do multiplications and divisions at varying accuracy depending on how much the numbers are multiplied or divided by. Multiplication by any integer value can be made without any errors assuming there is no overflow: 13 times (+22.3 dB) a signal for example can be done with 100 % accuracy by adding copies of the signal multiplied by 8, 4 and 1 (original) because 8 + 4 + 1 = 13. This gives following gain options up to 20 dB:

+6.02 dB

+9.54 dB

+12.04 dB

+13.98 dB

+15.56 dB

+16.90 dB

+18.06 dB

+19.08 dB

+20.00 dB

Dividing the signal causes rounding errors that can be transformed into non-distorting noise by using dither. Dividing by an integer value N gives the opportunity to not apply dither noise for sample values divisible by N. This reduces the dither noise by 10*log10 (N/(N-1)) dB. Using this dither reduction strategy, the available gains (and dither noise levels ref full dither) are:

-6.02 dB (-3.01 dB)

-9.54 dB (-1.76 dB)

-12.04 dB (-1.25 dB)

-13.98 dB (-0.97 dB)

-15.56 dB (-0.79 dB)

-16.90 dB (-0.66´dB)

-18.06 dB (-0.58 dB)

-19.08 dB (-0.51 dB)

-20.00 dB (-0.46 dB)

Combining multiplication and division gives much more options: For example multiplying by 3 (+9.54 dB) and then dividing by 2 (-6.02 dB) gives the gain of 1.5 (+3.52 dB) assuming there is no overflow during the calculation (for example processing 24 bit audio in 32 bit floating point). The takeaway from this is that there are ways of doing digital gain "wiser" if one understands binary numbers, bit shifting and dither.