Javascript ECMAScript 6负二进制文字
使用EMCAScript6,我发现有一种方法可以使用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(标志)); //这个输出正常吗?我以为二进制使用了
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