0

何か間違ったことをしているのかどうかはわかりませんが、この単純なJavaScriptを機能させることができないようです。

var a = 0;

a |= (1 << 31);

alert(a);

a |= (1 << 30);

alert(a);

あなたはここでそれを見ることができます http://jsfiddle.net/qPEVk/

それは3221225472ではありませんか?

ありがとう、
ジョー

4

2 に答える 2

4

技術的には問題はなく、32ビットのsigned intにキャストしているため、負の数が予想されます。

基本的に、先頭のビットは「負または正」を意味するため、(で1<<31)反転すると負の数になります。

ビットマスクは、最大32ビットで期待するとおりに機能します。JavaScriptでは32ビットビットマスクを超えることはできません。

于 2011-04-18T16:40:32.723 に答える
0
var a = 0;
var b;
a |= (1 << 31);
b = a
a |= (1 << 30);
b += a
alert(b);

上記の場合、bは-3221225472になります。

于 2011-04-18T16:43:02.633 に答える