Примечание - базовый (x>>>0).toString(2);
имеет небольшую проблему, когда х положительный. У меня есть пример кода в конце моего ответа, который исправляет эту проблему с помощью метода >>>, все еще используя >>>.
(-3>>>0).toString(2);
prints -3 in 2s complement.
1111111111101
Рабочий пример
C:\>type n1.js
console.log( (-3 >>> 0).toString(2) );
C:\>
C:\>node n1.js
11111111111111111111111111111101
C:\>
Это в адресной строке еще одно быстрое доказательство
javascript:alert((-3>>>0).toString(2))
Примечание. Результат очень слабый, он всегда начинается с 1, что для отрицательных чисел вполне подойдет. Для положительных чисел вы должны добавить 0 к началу, чтобы результат был действительно дополнением 2s. Таким образом, (8>>>0).toString(2)
производит 1000, которое на самом деле не является дополнением 8 в 2 с, но предваряя это 0, делая его 01000, является правильным дополнением 8 в 2 с. В правильном дополнении 2s любая битовая строка, начинающаяся с 0,>> 0, а любая битовая строка, начинающаяся с 1, является отрицательной.
например. это решает эту проблему
// or x=-5 whatever number you want to view in binary
x=5;
if(x>0) prepend="0"; else prepend="";
alert(prepend+((x>>>0)).toString(2));
Другие решения принадлежат Аннану (хотя объяснения и определения Аннана полны ошибок, у него есть код, который дает правильный вывод) и решение от Патрика.
Любой, кто не понимает факт положительных чисел, начинающихся с 0 и отрицательных чисел с 1, в дополнении 2s, может проверить эту SO QnA на дополнении 2s. Что такое «дополнение 2»?