Для того, чтобы перевести число в двоичную систему, надо представить его в виде суммы степеней двойки и выписать коэффициенты. Например 10 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0. Поэтому в двоичной системе 10 записывается так: 1010.
В памяти компьютера целые числа могут занимать например 32 бита, т. е. 4 байта. Внутреннее предствление числа 10 в таком случае будет: 00000000 00000000 00000000 00001010.
Число ~10 будет представлено как 11111111 11111111 11111111 11110101. Ему соответствует десятичное число -11, которое в двоичной системе записывется так: -1011.
В последнем случае видно, что запись отрицательного числа в памяти зависит от отвеленного ему места в памяти. Т. е. ~10 в случае отведённого ему места в 8 бит, выглядит как 11110101 и соответствует десятичному числу 245, а не -11.
(~10).toString(2) == '-1011' // Переводит ~10 = -11 в двоичную систему счисления