Obecnie najbardziej popularnym sposobem zapisu liczb całkowitych w systemie binarnym jest U2 („kod uzupełnień do dwóch”). Konwertowanie odbywa się w trzech krokach:
- Konwersja wartości bezwzględnej z liczby dziesiętnej N do jej postaci binarnej.
- Negacja bitowa, czyli odwrócenie poszczególnych bitów (zera przechodzą w jedynki, a jedynki przechodzą w zera) – w JavaScript istnieje bitowy operator NOT (tylda „~”) realizujący takie zadanie.
- Do otrzymanej postaci po negacji należy dodać binarnie jedynkę.
Zwróć uwagę na bit 31 (skrajny lewy). W liczbie dodatniej ma on wartość zero, co oznacza, że przy zamianie na postać dziesiętną wartość 2^31 mnożymy przez zero. Jeśli liczba jest wartością ujemną, to pierwszy bit dostaje wartość jeden (w kroku 2 gdy następuje bitowa negacja), więc 2^31 mnożymy przez 1 lecz dodatkowo wartość tę uwzględniamy jako ujemną (z minusem). Oznacza to, że w praktyce przy konwersji ujemnej liczby binarnej do postaci dziesiętnej do liczby -(2^31) dodajemy kolejne, następne potęgi dwójki mnożone przez jeden lub zero. W rezultacie otrzymujemy właśnie liczbę -25.
Konwersja w języku JavaScript:
( -666 >>> 0 ).toString(2); //"11111111111111111111110101100110"