Digital 16-bit PCM audio signal scaling and STFT spectogram amplitude
1: Scaling

Audio corresponds to a pressure wave, so it is mostly symmetrical in amplitude. Therefore audio is normally represented as a signed value (with 0 average). [-1,1) is the standard representation.

You may offset your signal by 1/2 and represent the wave in the range [0,1), but this adds nothing but a huge component at 0 Hz in your spectrogram.

2: Warining when log(0)

You cannot calculate log(0). If that bothers you, create a function that produces a minimum value. Something like mylog(x) = log10(max(abs(x),1E-5)).

3: Small values in spectrogram

Values in spectrogram indicate energy per frequency bin. The more bins, the smaller values you may get there. And you may well have a 0 as result (see (2) above).

4: Signs again

Stick to signed values. See above.