Decode, оказывается 
(-Number).toString(2) работает с Number как с положительным числом а потом прибавляет 
'-':
alert( (-11).toString(2) );
alert( (11).toString(2) );
Как и 
parseInt('Number', 2) видит Number только как положительное двоичное число а потом прибавляет '-':
alert( parseInt('-1011', 2) );
alert( parseInt('1011', 2) );
Для представления отрицательного двоичного числа нашел такое:
alert( (-11 >>> 0).toString(2) );
alert( parseInt('11111111111111111111111111110101', 2) >> 0 );
Теперь всё как надо:
alert( (~10 >>> 0).toString(2) );
	
	
		
			Сообщение от Malleys
			 
		
	 | 
	| 
		Таким образом однозначно могут быть представлены целые числа от 0 до 2147483647 и от -2147483648 до -1, с оговоркой, что они 32-х битовые.
	 |