С EMCAScript6, я вижу, что есть способ представить binary literals с использованием префикса 0b
или 0B
. Я экспериментировал с ним и не мог найти способ представить отрицательное число (поскольку он не использует два дополнения). Я что-то упускаю? Я не могу найти, где бинарные литералы объясняются в фактической спецификации.ECMAScript 6 отрицательный двоичный литерал
Я полагаю, я мог бы осуществить это сам с операцией как ~(num - 1)
или -num
:
function twosComplement(num) {
return ~(num - 1);
}
var flag = 0b100;
console.log(flag);
console.log(twosComplement(flag));
// is this output normal? I thought binary used a sign bit
console.log(twosComplement(flag).toString(2));
'-0b100'? Я не думаю, что бинарные литералы (или любые другие числовые литералы) должны рассматриваться как привязанные к конкретному двоичному представлению, поэтому вам нужно указать отрицательное значение литерала, если вы хотите получить отрицательный результат. –
@JeremyBanks Вероятно, вы правы. Я был взволнован на мгновение, что, возможно, они не отвлекли это. Есть ли спецификация? – 4castle
Числовые литералы [здесь] (http://www.ecma-international.org/ecma-262/6.0/#sec-literals-numeric-literals) в спецификации, которая включает * BinaryIntegerLiteral *, хотя она не похоже, указывает префикс '-', поэтому я думаю, что это просто оператор отрицания. –