A confusion regarding signed representation of binary numbers
In 2's complement, 1000 does not represent 0, but rather -8. So, in your ADC (or DAC), you would use it to represent -4.0 V.

More precisely, in an ADC, each code would represent the center of its range:

Code     ADC input            DAC output
----  ----------------        ----------
0000: -0.25 to +0.25 V          0.00 V
0001: +0.25 to +0.75 V         +0.50 V
0010: +0.75 to +1.25 V         +1.00 V
0011: +1.25 to +1.75 V         +1.50 V
0100: +1.75 to +2.25 V         +2.00 V
0101: +2.25 to +2.75 V         +2.50 V
0110: +2.75 to +3.25 V         +3.00 V
0111: greater than +3.25 V     +3.50 V


Similarly, in the negative direction, you would have:

Code     ADC input            DAC output
----  ----------------        ----------
1111: -0.25 to -0.75 V         -0.50 V
1110: -0.75 to -1.25 V         -1.00 V
1101: -1.25 to -1.75 V         -1.50 V
1100: -1.75 to -2.25 V         -2.00 V
1011: -2.25 to -2.75 V         -2.50 V
1010: -2.75 to -3.25 V         -3.00 V
1001: -3.25 to -3.75 V         -3.50 V
1000: less than -3.75 V        -4.00 V




A sign-magnitude ADC would be slightly different. The positive direction would look the same:

Code     ADC input            DAC output
----  ----------------        ----------
0000: -0.25 to +0.25 V          0.00 V
0001: +0.25 to +0.75 V         +0.50 V
0010: +0.75 to +1.25 V         +1.00 V
0011: +1.25 to +1.75 V         +1.50 V
0100: +1.75 to +2.25 V         +2.00 V
0101: +2.25 to +2.75 V         +2.50 V
0110: +2.75 to +3.25 V         +3.00 V
0111: greater than +3.25 V     +3.50 V


But in the negative direction, you would have:

Code     ADC input            DAC output
----  ----------------        ----------
1001: -0.25 to -0.75 V         -0.50 V
1010: -0.75 to -1.25 V         -1.00 V
1011: -1.25 to -1.75 V         -1.50 V
1100: -1.75 to -2.25 V         -2.00 V
1101: -2.25 to -2.75 V         -2.50 V
1110: -2.75 to -3.25 V         -3.00 V
1111: less than -3.25 V        -3.50 V


It's possible that the range around zero might be split into two:

Code     ADC input            DAC output
----  ----------------        ----------
0000:  0.00 to +0.25 V          0.00 V
1000: -0.25 to  0.00 V          0.00 V