私はJavaに変換できるように、このcppコードを理解しようとしています。 r1
は符号なしのint ビットフィールドですが、ここではブール値に設定されているようですか?CPP unsigned int値でbooleanがどのように使用されていますか?
union GpioPins {
struct {
unsigned int ignoredPins1:2;
unsigned int r1:1;
unsigned int g1:1;
unsigned int b1:1;
} bits;
uint32_t raw;
GpioPins() : raw(0) {}
};
はその後
GpioPins *bits = ...
uint8_t red = 141; // any number between 0..255
uint8_t mask = 1 << i; // i is between 0..7
bits->bits.r1 = (red & mask) == mask;
混乱されている行を含むループの最終的なものです。 (red & mask) == mask
はtrue
またはfalse
に解決されませんか?
つまり、Javaで、これは次のようになります。後で、その後
private static class GpioPins {
static class Pins {
int ignoredPins1;
int r1;
int g1;
int b1;
}
int raw = 0;
Pins bits;
}
GpioPins bits = ...
int red = 141; // any number between 0..255
int mask = 1 << i; // i is between 0..7
bits.bits.r1 = (red & mask) == mask; // compile error, incompatible types
私はcppのコードでは理解していないが、それが何であるかを知らない何かが明確にありgoogleそれに:-)
http://en.cppreference.com/w/cpp/language/bit_field –
C++整数の真理がどのように機能するのか理解していますか? – chrylis
@chrylisあなたが意味することは、0は偽であり、他のすべての数は真であるということですか? – Blundell