以下のコードでこれらの結果が得られるのはなぜですか?
void loop() {
byte test = 00000101;
Serial.print("The byte test is: ");
Serial.println(test);
int x = (int)test;
int y = (int)test<<8;
Serial.print("The int x is: ");
Serial.println(x);
Serial.print("The int shifted y is: ");
Serial.println(y);
byte tost = 10000001;
int z = test + tost;
Serial.print("The int z is: ");
Serial.println(z);
delay(1000);
}
結果:
バイトテストは: 65
int x は: 65
int シフトされた y は次のとおりです: 16640
int z は: 194
テストを 00000001 に変更すると、素晴らしいパフォーマンスが得られます。
変更されたコード:
void loop() {
byte test = 00000001;
Serial.print("The byte test is: ");
Serial.println(test);
int x = (int)test;
int y = (int)test<<8;
Serial.print("The int x is: ");
Serial.println(x);
Serial.print("The int shifted y is: ");
Serial.println(y);
byte tost = 10000001;
int z = test + tost;
Serial.print("The int z is: ");
Serial.println(z);
delay(1000);
}
結果:
The byte test is: 1
The int x is: 1
The int shifted y is: 256
The int z is: 130
私の問題は、加速度計のデータ レジスタから読み取りたい 2 バイトがあることです。値は2 の補数wire.read
で格納されるため、シフトを行う必要があるため、値を破棄すると符号付きと符号なしのバイトが返されるので、チェックしたいと思いました。
だから私はバイトを持っているかどうかを確認したかったので、それをシフトしてintに保存しようとしました.どのような値が得られますか.