I use ParEdit
, which makes manipulating s-expressions much easier, but for this particular case has paredit-comment-dwim bound to M-;, which usually does what I mean
. Without paredit it is bound to comment-dwim, which does something similar, if less specialized for editing Lisp.
There is also just uncomment-region. Why would you want to call comment-region with negative argument anyway? Unless this was changed in Emacs 23, which I use, negative argument there would subtract "comment characters", which is rather rarely necessary. Doing just C-u M-x comment-region is equivalent to M-x uncomment-region.
Anyway, I recommend using M-; combined with (possibly temporary) transient mark to comment/uncomment regions.