重複の可能性:
C++ の「<<」演算子とは?
私が見ているコードでは、次のことが行われます。
... (header[4] << 8) + header[5] ...
私はプログラミングにかなり慣れていないので、以前に << 演算子を見たことがありません。グーグルは結果を提供しませんでした。簡単な指針をいただければ幸いです。
重複の可能性:
C++ の「<<」演算子とは?
私が見ているコードでは、次のことが行われます。
... (header[4] << 8) + header[5] ...
私はプログラミングにかなり慣れていないので、以前に << 演算子を見たことがありません。グーグルは結果を提供しませんでした。簡単な指針をいただければ幸いです。
<<
演算子は、ビットをN ビット分左にシフトします。N は演算子の後に続きます。あなたの例では、アドレスのビットはheader[4]
8ビット左にシフトされます。
これが良いのは、2^8 = 256 であるため、効果的に 256 を掛けることになることです。右にシフトした場合、 の値は 2^8 = 256 で除算されます。header[4]
実際のビットレベルの例:
したがって、最終的には、ビット シフトは乗算 (左にシフト) または除算 (右にシフト) のいずれかを意味することがよくあります。ビットシフト、またはビットシフトを乗算に置き換えます。コンパイラは、多くの場合、乗算と除算をビット シフトの数に置き換えることを好みます。これは、コンピューターにとってビット シフトは、値の実際の乗算または除算を実際に行うよりもはるかに高速であるためです。