Audio Bit Depth "mapping" from DAW to Audio card: is this correct? Let say I'm generating a 1 kHz sine wave within my DAW, using some synth (Sytrus in my case). I normalize it, so it play at max "digital" amplitude 0db.

Thus, any sample of the signal would gets a Floating Point values (in 32 or 80 bit of precision, using FL Studio 32bit; but that's irrelevant right now).

This means that all values (since the signal is normalized) goes from -1.0 to 1.0 max.

Now, the signal go through ASIO Drive and reach my sound card (an M-Audio FireWire Solo), 24-bit (fixed-point representation). Due to ENOB, it will use 21-bit, thus the max value would be 1048576 (which is 100000000000000000000 in binary).

Is correct to state that the value 1.0 is mapped to 100000000000000000000? And -1.0 to 000000000000000000000?

I'm really not sure about this. Does this mapping happen? Is it correct the range I've used (-1.0/1.0 => 000000000000000000000/100000000000000000000)?

Can you help me to understand this "mapping", if any?
If your sound card has input range 2Vp-p (2 volts peak to peak = -1V to +1v) and has 24 bits of resolution (ENOB doesn't play any role in this, you still get 24 bits for each sample for each channel, but the higher ENOB the smaller noise you get), here is what voltage represents the output code of ADC:

00000000 00000000 00000000 (lowest possible result from ADC) =&gt; -1V
10000000 00000000 00000000 (midpoint) =&gt; 0V
11111111 11111111 11111111 (highest possible value) =&gt; +1V


Or with 3 bit ADC:

000 (0 dec) =&gt; -1V
001 (1 dec)
010 (2 dec)
011 (3 dec)
100 (4 dec) =&gt; (midpoint approximately) 0V
101 (5 dec)
110 (6 dec)
111 (7 dec) =&gt; +1V


So the voltage is proportionally distributed in the full ADC range, to calculate the voltage correspondig to specific code, you can use following formula:

U = (code/(2^bits-1)) * (Umax - Umin) + Umin


where Umin = -1V, Umax = 1V, bits = 24
For conversion between binary and decimal numbers refer to this document