js、javaの符号なし右シフト文字、左シフト文字、符号付き右シフト文字

シフト操作は、バイナリの通常のローシフトです。シフト操作は多くの素晴らしい効果をデザインすることができ、グラフィックスや画像プログラミングで広く使用されています。

  • 「<<」演算子

「<<」演算子は左シフト操作を実行します。シフト動作中、符号ビットは常に変更されません。右側に空いている位置がある場合は、自動的に0で埋められ、32ビットを超える値は自動的に破棄されます。

数値5を2桁左に移動すると、戻り値は20になります。

console.log(5 << 2);  //返回值20

  
   
   
  • 1

図に示すように、式を使用してデモンストレーションします。
ここに画像の説明を挿入

思考:为啥没有<<<呢
因为左位移是填补右边空出的位,符号位不影响它的值哦

  
   
   
  • 1
  • 2
  • 「>>」演算子

「>>」演算子は、符号付き右シフト操作を実行します。左シフト操作とは逆に、32ビット数のすべての有効ビットを全体として右にシフトし、符号ビットの値を使用して空のビットを埋めます移動中に超過した値は破棄されます。

1000の値を8ビット右にシフトすると、戻り値は3になります。

console.log(1000 >> 8);  //返回值3

  
   
   
  • 1

図に示すように、式を使用してデモンストレーションします。

ここに画像の説明を挿入

値-1000を8ビット右にシフトすると、戻り値は-4になります。

console.log(-1000  >> 8);  //返回值 -4

  
   
   
  • 1

図に示すように、式を使用してデモンストレーションします。符号ビット値が1の場合、有効ビットの左側の空のビットはすべて1で埋められます。

  • ">>>"演算子

">>>"演算子は、5シンボルの右シフト操作を実行します。符号なし32ビット整数のすべての桁を全体として右にシフトします。符号なしまたは正の右シフト演算の場合、符号なし右シフト演算と符号付き右シフト演算の結果は同じです。

次の2行の式の戻り値は同じです。

console.log(1000 >> 8);  //返回值3
console.log(1000 >>> 8);  //返回值3

  
   
   
  • 1
  • 2

負の数の場合、符号なしの右シフトは0を使用してすべての空席を埋めると同時に、負の数は正の数として扱われ、結果は非常に大きくなります。したがって、符号なしを使用する場合は注意が必要です。偶発的なエラーを回避するための右シフト演算子。

console.log(-1000 >> 8);  //返回值 -4
console.log(-1000 >>> 8);  //返回值 16777212

  
   
   
  • 1
  • 2

図に示すように、式を使用してデモンストレーションします。左側のスペースは、符号ビットの値で埋められなくなりましたが、0で埋められています。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/fxwentian/article/details/115178735