借助EMCAScript6,我发现可以使用0b
或0B
前缀来表示binary literals。我正在尝试它,并且找不到表示负数的方法(因为它没有使用两个补码)。我错过了什么吗?我无法找到实际规范中解释二进制文字的位置。
我想我可以通过~(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));

答案 0 :(得分:0)
要输入负数,只需在文字前加上-
符号(一元减号运算符):
-0b11010 // -26
二进制文字的规范在Numeric Literals部分。
相关片段:
NumericLiteral ::(...)BinaryIntegerLiteral
BinaryIntegerLiteral :: 0b BinaryDigits
BinaryDiggits
是0
和1
。