Arduino マイクロ コントローラーをプログラミングしていて、後で使用するために加速度計センサー データを受け入れるためのコードを見つけました。次のコード以外はすべて理解できます。何が起こっているのかについてある程度の直感を持ちたいのですが、検索して読んでも、何が起こっているのか頭を悩ませて本当に理解することはできません.
私は C++ のクラスを受講しましたが、ビットごとの操作やビット シフトなど、あなたがそれを呼びたいものはほとんどありませんでした。私が理解していると思うことを説明してみましょう。必要なところを修正してください。
そう:
- xに値を格納していると思いますが、実際にはかなり確かです。
- スロット番号 1 の配列「buff」のデータは、整数のデータ型に設定されているようです。
- スロット 1 の値は左に 8 桁ビット シフトされています (これはスロット 0 をバフすることを指していますか?)
この新しい値はバッファ スロット 0 のデータと比較され、いずれかのビットが true の場合、x に格納されているデータのビットも true になるため、0 と 1 = 1、0 と 0 = 0 と 1 と 0 =最後に保存された値の 1。
コードは、x、y、z の 3 つの軸すべてに対してこれを行いますが、理由がわかりません...助けが必要です。先に進む前に、完全に理解したいと思います。
//each axis reading comes in 10 bit resolution, ie 2 bytes.
// Least Significant Byte first!!
//thus we are converting both bytes in to one int
x = (((int)buff[1]) << 8) | buff[0];
y = (((int)buff[3]) << 8) | buff[2];
z = (((int)buff[5]) << 8) | buff[4];