2016-06-15 10 views
1

EMCAScript6では、のエラーを表すbinary literalsがあります。0bまたは0Bという接頭辞を使用する方法があります。私はそれを試していて、負の数を表現する方法を見つけることができませんでした(2の補数を使用していないので)。何か不足していますか?実際の仕様でバイナリリテラルがどこで説明されているのかわかりません。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));

+0

'-0b100'?私は、バイナリリテラル(または他の数値リテラル)が特定のバイナリ表現に結びついていると考えられるとは思わないので、ネガティブな結果が必要な場合は、リテラル値を負にする必要があります。 –

+0

@JeremyBanksあなたはおそらく正しいでしょう。私は、おそらく彼らはそれを抽象化していなかったかもしれないことに興奮していました。仕様の参照はありますか? – 4castle

+2

* BinaryIntegerLiteral *を含む仕様の数値リテラル[ここにある](http://www.ecma-international.org/ecma-262/6.0/#sec-literals-numeric-literals)。接頭辞 '-'を指定しているようですので、否定演算子だと思います。 –

答えて

0

入力負の数にちょうど-記号(単項マイナス演算子)を使用してリテラルの接頭辞:

-0b11010 // -26 

バイナリリテラの仕様lsはセクションNumeric Literalsにあります。

関連フラグメント:

NumericLiteral ::(...)BinaryIntegerLiteral

BinaryIntegerLiteral :: 0B BinaryDigits

そしてBinaryDiggits01です。

関連する問題