Javascript ECMAScript 6负二进制文字

Javascript ECMAScript 6负二进制文字,javascript,binary,ecmascript-6,Javascript,Binary,Ecmascript 6,使用EMCAScript6,我发现有一种方法可以使用0b或0b前缀来表示。我正在试验它,但找不到一种表示负数的方法(因为它不使用二的补码)。我错过什么了吗?我找不到二进制文字在实际规范中的解释位置 我想我可以自己用一个像~(num-1)或-num这样的操作来实现它: function twoscompletion(num){ return~(num-1); } var标志=0b100; 控制台日志(标志); 日志(TwosCompletion(标志)); //这个输出正常吗?我以为二进制使用了

使用EMCAScript6,我发现有一种方法可以使用
0b
0b
前缀来表示。我正在试验它,但找不到一种表示负数的方法(因为它不使用二的补码)。我错过什么了吗?我找不到二进制文字在实际规范中的解释位置

我想我可以自己用一个像
~(num-1)
-num
这样的操作来实现它:

function twoscompletion(num){
return~(num-1);
}
var标志=0b100;
控制台日志(标志);
日志(TwosCompletion(标志));
//这个输出正常吗?我以为二进制使用了符号位

log(两个完成(标志).toString(2))
要输入负数,只需在文本前面加上
-
符号(一元减号运算符):

二进制文本的规范见第节

相关片段:

NumericLiteral::(…)BinaryIntegerLiteral

BinaryIntegerLiteral::0b二进制数字


binarydigit
0
1

-0b100
?我认为二进制文字(或任何其他数字文字)不应被视为与特定的二进制表示形式相关联,因此,如果希望得到负结果,则需要指示负的文字值。@JeremyBanks您可能是对的。我激动了片刻,也许他们没有把这一点抽象出来。有规范引用吗?规范中的数值文本,包括BinaryIntegerLiteral,虽然它似乎没有指定
-
前缀,所以我认为这只是否定运算符。@Skint有趣!我想我从未意识到(任何基的)负文本实际上被解释为正文本,然后它被否定。
0b100
在赋值时被转换为
4
整数。那么
-0b100有什么问题?二进制文字与字长无关,也不是真正的二进制文件,因此不是
toString()
返回值。
-0b11010 // -26