Plotting Spectrum Analysis I am working on a spectrum analyzing simulator, which is meant to compute and plot the FFT of a sine wave carrier signal of $16 Hz$.

From my practicals with a spectrum analyzer, I know that the spike shows up on the $16Hz$ mark. But after computing my own FFT and passing the magnitude of the FFT to a plotter in Matlab, I get two spikes, one at the beginning and the other at the end.

My sample rate is $2048$ samples per second, and what I plotted was the respective $abs(FFT)$ against a frequency step of $16/2048$. Doing the fftshift only moves the spike to the $8Hz$ mark and not $16Hz$. 

I've tried computing FFT in different programming languages and with different tools (java jtransform, Matlab, C language, Excel, two java written classes for FFT by different universities).

I dont think my FFT result are wrong, I think it has to do with the plotting. I do not understand why my plot does not look like it would in real life. From my description and information, can you see any problems that would cause my plot to be wrong?
Generic FFTs use complex-valued input arrays and provide complex-valued output arrays, so they can differentiate positive and negative frequencies for complex-valued signals.   For real-valued signals, which is what it sounds like your case may be, this means that the positive and negative frequencies are mirrors of each other, so the spike at 16Hz will be mirrored by a spike at -16Hz.  Matlab's FFT function output array has the positive frequencies first followed by the negative frequencies, so one would expect two spikes:  the first at 16Hz, and the second wrapped to -16Hz which will be almost at the end of the array.

fftshift should have "unfolded" the output array so that the negative frequencies plot on the left, with DC (0Hz) in the center, and positive frequencies on the right.   You should still see two spikes, one at -16 Hz and one at +16Hz, symmetric about zero.