何か間違ったことをしているのかどうかはわかりませんが、この単純なJavaScriptを機能させることができないようです。
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
あなたはここでそれを見ることができます http://jsfiddle.net/qPEVk/
それは3221225472ではありませんか?
ありがとう、
ジョー
何か間違ったことをしているのかどうかはわかりませんが、この単純なJavaScriptを機能させることができないようです。
var a = 0;
a |= (1 << 31);
alert(a);
a |= (1 << 30);
alert(a);
あなたはここでそれを見ることができます http://jsfiddle.net/qPEVk/
それは3221225472ではありませんか?
ありがとう、
ジョー
技術的には問題はなく、32ビットのsigned intにキャストしているため、負の数が予想されます。
基本的に、先頭のビットは「負または正」を意味するため、(で1<<31
)反転すると負の数になります。
ビットマスクは、最大32ビットで期待するとおりに機能します。JavaScriptでは32ビットビットマスクを超えることはできません。
var a = 0;
var b;
a |= (1 << 31);
b = a
a |= (1 << 30);
b += a
alert(b);
上記の場合、bは-3221225472になります。