ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 32 ビット整数の符号なし操作 example_javascript スキル

JavaScript 32 ビット整数の符号なし操作 example_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 17:10:291364ブラウズ

JavaScript では、すべての整数変数はデフォルトで符号付き整数になります。これは何を意味しますか?

符号付き整数は、31 ビットを使用して整数の値を表し、ビット 32 を使用して整数の符号を表します。0 は正の数を表し、1 は負の数を表します。
値の範囲は -2^31 - 2^31-1、つまり -2147483648 ~ 2147483647 です。

JavaScript がビット演算を実行する場合、32 ビットの符号付き整数型が使用されます。つまり、変換の結果も 32 ビットの符号付き整数型になります。 シフトを実行すると予期しない結果が発生する場合があります。以下に C 言語と JS の比較を示します。

C 言語

コードをコピー コードは次のとおりです:

unsigned int a = 3774191835u;
unsigned int b = a >
/* b == 943547958 */


ご覧のとおり、JavaScript はビット演算を実行するときに符号付き整数を使用するため、異なる結果が得られます。 どうやって解決すればいいでしょうか?

JavaScript の符号付き数値を符号なし数値に変換できます。 >>>0 シフト操作を実行するだけです。

>> を使用しないことをお勧めします。左端のビットは符号ビットとして解析され、数値がオーバーフローすると解析されるため、>>> を使用することをお勧めします。負の数として。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。